如何在打字稿中组织类型/接口声明?

时间:2018-11-04 18:53:26

标签: typescript typescript-typings

我在打字稿中有点新,使我有些困惑的是类型/接口声明。我正在编写一个lib,该lib当前具有一些类和一些其他类型/接口声明。我在大多数代码中都使用了这些类型/接口,起初我会将它们放在types文件夹中的单个文件中,然后在需要的地方导入它们,现在我在目录中只有一个models.d.ts在此命名空间内,声明了namespace types的types文件夹,导出了我在整个代码中使用的所有类型/接口。这种方法是否可行,还是有更好的方法来组织类型和接口定义?

1 个答案:

答案 0 :(得分:2)

通常,对于非强类型的JS库,只将.d.ts文件用于类型定义文件。这是有关.d.ts文件的另一种SO:About "*.d.ts" in TypeScript。为您的类型提供目录是我们使用的解决方案,并且看起来效果很好。是的,您必须在文件中导入类型,但是它可以使您明确地知道它,并且如果使用“ TypeScript Hero”插件,VS Code可以自动为您添加导入。

此外,您可以在一个文件中放置多个类型,但是我只能通过组合功能来做到这一点,例如飞机,汽车和小船以及它们是否足够小,例如文件{{1} },或者您可能有四个文件:vehicles.tsvehicles.tsairplanes.tscars.ts,其中您在boats.ts中具有通用类型,而在其中具有特定类型其他文件。

现在,如果您从一个单一的文件vehicles.ts开始,然后开始以一堆不同的类型增长,并决定要对其进行分解,那么您可以采用一种方法,除了重构您的文件之外,不对其进行任何重构。类型代码是创建一个名为Vehicles的目录,然后将所有文件放入重构的文件中,并以index.ts文件结尾,该文件包含所有类型的导入和导出。这是一个示例:

您的项目文件:

vehicles.ts

当前正在引用该目录中的Vehicles.ts文件。现在,一旦我们进行了重构,并有了目录:“ src / types / vehicle”,该目录下具有重构的.ts文件,您将创建一个import { Boeing737, Boeing747, FordExplorer, BassBoat } from 'src/types/vehicle'文件,如下所示:

index.ts

现在,您在项目文件中的导入完全没有改变,但是现在可以从子文件中获取其类型。然后,这可以在不更改项目文件的情况下进行进一步的重构,例如,如果您要将汽车与SUV分开。如果您在所有文件中都使用相同类型的文件,则只需要一条导入行即可复制到新文件,或仅根据需要导入它们。

如果您想了解有关index.ts文件及其工作方式的更多信息,这里是打字稿文档:https://www.typescriptlang.org/docs/handbook/module-resolution.html