在tsconfig.json中启用clarification和clarificationMap的用例是什么?

时间:2019-10-19 02:17:19

标签: typescript tsconfig

如果启用了sourcemap,则可以在浏览器上进行调试。同样,在寻找clarification和clarificationMap的用例。

我已经在Internet上进行了搜索,但是我的坏人除了生成.d.ts文件之外找不到实际的用例。

2 个答案:

答案 0 :(得分:2)

随着应用程序的增长,Typescript进行类型检查和编译代码所花费的时间将越来越长。对于大型代码库,缓慢的编译时间会严重减慢您的开发速度。为了克服这个问题,从Typescript 3.0开始,您可以使用Project References将大项目分成较小的子项目。 declarationdeclarationMap选项在这里起着重要作用。


declaration选项

启用declaration选项将导致Typescript编译器创建声明文件(.d.ts)。 .d.ts文件包含在相应.ts文件中使用的类型的声明。它们不包含类型的实现,而仅包含可公开访问的类型声明。

因此,任何人都可以在其他Typescript项目中使用您TypeScript项目中的类型。编译器可以在您的.d.ts文件的帮助下对其他项目中的代码进行类型检查,即使他们无权访问您的项目。

当您将一个大项目拆分为多个较小的子项目时,这很有用。子项目可以访问彼此的声明文件。当您的一个子项目(例如B)依赖于另一个子项目(例如A)中声明的类型时,编译器将使用子项目A中的.d.ts文件进行类型检查和编译。项目B,而无需再次编译子项目A。这样可以在大型项目中缩短编译时间。


declarationMap选项

启用declarationMap选项时,Typescript编译器将创建声明源映射(.d.ts.map)文件。声明源映射文件包含映射定义,这些定义将.d.ts文件中生成的每个类型声明链接回原始源文件(.ts)。这些文件中的映射定义为JSON格式。

这些由编辑器/ IDE使用。您将能够使用“转到定义”和“重命名”等编辑器功能来浏览和编辑子项目中的代码。这意味着,例如,如果您在一个子项目中重命名类型,则更改也会传播到其他子项目中。


请注意,即使您不拆分项目,也可以使用这些选项。如果要为.d.ts文件提供编辑器功能“转到定义”,此功能将非常有用。如果您在.d.ts文件的声明中单击“转到定义”,则会将您带到源文件(.ts)的位置,而不是.d.ts的位置。但是这些选项在拆分项目中确实很有用。

就是这样!希望有帮助。

如果您的项目包含150个左右的文件,建议使用Project References将其拆分为较小的子项目。

答案 1 :(得分:1)

生成.d.ts文件正是declaration编译器选项的用例,因此生成输出为.js,而所有类型定义仍可以保留给其他消耗您项目的TS项目

IDE可以利用declarationMap选项提供更好的开发人员体验:当您当前有一个对应的.d.ts文件打开并想要查看其原始文件时,它使您可以快速导航到原始源。实现(另请参见this answer)。

  

在--declaration旁边启用--declarationMap会使编译器在输出.d.ts文件的旁边发出.d.ts.map文件。语言服务现在还可以理解这些映射文件,并使用它们将基于声明文件的定义位置映射到其原始源(如果可用)。

     

换句话说,在使用--declarationMap生成的.d.ts文件中的声明上进行定位定义会将您带到定义该声明的源文件(.ts)位置,而不是.d.ts。