我有2个定义文件:foo.d.ts和bar.d.ts
// foo.d.ts
interface IBaseInterface {
// stuff
}
// bar.d.ts
interface IDerivedInterface extends IBaseInterface {
// more stuff
}
这很好用。我将一个ES6导入添加到foo.d.ts的那一刻,我的整个应用程序不再能够“看到”它的内容。
例如,将foo.d.ts修改为以下内容:
// foo.d.ts
import { SomeClass } from 'my-module';
interface IBaseInterface {
baz: SomeClass;
}
以下是bar.d.ts:
// bar.d.ts
// ERROR: Cannot find name IBaseInterface
interface IDerivedInterface extends IBaseInterface {
}
我错过了什么?
答案 0 :(得分:3)
在文件中添加import
使其成为一个模块,这意味着当前文件中定义的内容对全局范围内的内容不可见。
要解决此问题,请导出IBaseInterface
并将其从您定义的文件IDerivedInterface
中导入。例如,您可以编写
// foo.d.ts
import { SomeClass } from 'my-module';
export interface IBaseInterface {
baz: SomeClass;
}
和
// bar.d.ts
import { IBaseInterface } from './foo';
interface IDerivedInterface extends IBaseInterface {
}