简短而甜蜜,使用declare或export?定义我自己的接口是更好的做法吗?
// i.something.d.ts
export default interface ISomething {
myValue: string;
}
// something.ts
import ISomething from 'i.something';
export class Something implements ISomething {...}
VS
// i.something.d.ts
declare interface ISomething {
myValue: string;
}
// something.ts
export class Something implements ISomething {...}
当然,如果必须导入其自己的另一种类型,即使声明也不能在环境中工作。 (除非有更好的方法)
// i.something-else.d.ts
import SomeBiggerThing from '...';
import SomeKindOfType from '...';
declare interface ISomethingElse extends SomeBiggerThing {
myValue: SomeKindOfType;
}
// something-else.ts
// ISomethingElse isn't available unless I import it, because it imports its own stuff.
import ISomethingElse from 'i.something-else';
export class Something implements ISomethingElse {...}
答案 0 :(得分:3)
大多数大型/成熟的TypeScript库都避免依赖于环境声明,而是export
需要在当前文件之外重用的任何内容。例如,Angular代码库为每个模块都有一个interfaces.ts
文件,该文件被导入到需要引用接口的每个文件中:
https://github.com/angular/angular/blob/master/packages/http/src/interfaces.ts
这有一些优点:
import
语句显式引用的。import
和export
语句,而环境类型上下文是仅限TypeScript的概念。