gpt4 book ai didi

TypeScript - 声明与导出 - 最佳实践?

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:14 29 4
gpt4 key购买 nike

简短而贴心,用 declare 或 export 定义我自己的接口(interface)哪个更好?

// i.something.d.ts
export default interface ISomething {
myValue: string;
}

// something.ts
import ISomething from 'i.something';

export class Something implements ISomething {...}

对比

// i.something.d.ts
declare interface ISomething {
myValue: string;
}

// something.ts
export class Something implements ISomething {...}

当然,如果它必须导入它自己的另一种类型,即使 declare 也不能在环境中工作。 (除非有更好的方法)

// 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 {...}

最佳答案

大多数大型/成熟的 TypeScript 库避免依赖环境声明,而是 export 任何需要在当前文件之外重用的内容。例如,Angular 代码库为每个模块都有一个 interfaces.ts 文件,该文件被导入到需要引用接口(interface)的每个文件中:

https://github.com/angular/angular/tree/0b1f5d21270063b2019b11a9494397916d3977d6/packages/http/src/interfaces.ts

这有几个优点:

  • 文件中使用的所有类型都通过文件顶部的 import 语句明确引用。
  • 更容易导出模块的接口(interface),使它们可供模块的使用者使用。为了导出环境接口(interface),您需要直接在模块的主文件中定义接口(interface)(只能从模块中导出本地声明)。
  • 它更像 JavaScript。现代 JavaScript 依赖于 importexport 语句,而环境类型上下文是一个仅限 TypeScript 的概念。

关于TypeScript - 声明与导出 - 最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690533/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com