通常,您只使用 .d.ts 文件作为非强类型的 JS 库的类型定义文件。这是关于 .d.ts 文件的另一个 SO:关于 TypeScript 中的“*.d.ts” https://stackoverflow.com/questions/21247278/about-d-ts-in-typescript。我们使用的解决方案是拥有一个包含您的类型的目录,并且似乎效果很好。是的,您必须导入文件中的类型,但它允许您明确地说明这一点,并且如果您使用“TypeScript Hero”插件,VS Code 可以自动为您添加导入。
另外,您可以将多种类型放入一个文件中,但我只会将功能分组在一起,例如飞机、汽车和船,以及它们是否足够小,例如文件vehicles.ts
,或者您可以有四个文件:vehicles.ts
, airplanes.ts
, cars.ts
and boats.ts
,其中有泛型类型vehicles.ts
以及其他文件中的具体内容。
现在,如果您从单个文件开始,vehicles.ts
它开始随着一堆不同的类型而增长,并决定您想要将它们分解,一种无需重构任何内容即可实现的方法,但您的类型代码是创建一个名为 cars 的目录,然后将所有文件放入其中您重构,并以包含所有类型的导入和导出的 index.ts 文件结束。这是一个例子:
您的项目文件:
import { Boeing737, Boeing747, FordExplorer, BassBoat } from 'src/types/vehicle'
当前正在引用该目录中的 cars.ts 文件。现在,一旦我们进行了重构,现在有了目录:“src/types/vehicle”,其中包含重构的 .ts 文件,您可以创建一个index.ts
文件看起来像这样:
export { Boeing737, Boeing747 } from './airplanes';
export { FordExplorer, ToyotaCorolla, ToyotaSienna } from './cars';
export { BassBoat, Yacht } from './boats';
现在,您在项目文件中的导入根本没有改变,但它现在从子文件中获取其类型。这样就可以在不更改项目文件的情况下进行进一步重构,例如如果您想将汽车与 SUV 分开。如果您在所有文件中使用相同的类型,则只需要一个导入行,您可以将其复制到新文件中,或者根据需要导入它们。
如果您想了解有关 index.ts 文件及其工作原理的更多信息,请参阅以下 Typescript 文档:https://www.typescriptlang.org/docs/handbook/module-resolution.html https://www.typescriptlang.org/docs/handbook/module-resolution.html.