Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 在tsconfig.json中启用声明和声明映射的用例是什么?_Typescript_Tsconfig - Fatal编程技术网

Typescript 在tsconfig.json中启用声明和声明映射的用例是什么?

Typescript 在tsconfig.json中启用声明和声明映射的用例是什么?,typescript,tsconfig,Typescript,Tsconfig,如果我们启用sourcemap,它允许我们在浏览器上进行调试。同样地,寻找declaration和declarationMap的用例 我已经在internet上搜索过了,但是我的bad除了生成.d.ts文件外,没有找到实际的用例。生成.d.ts文件正是编译器选项的用例,因此构建输出是.js,而所有类型定义仍然可以为使用您的项目的其他ts项目保留 IDE可以利用选项提供更好的开发人员体验:当您当前打开相应的.d.ts文件并希望查看其实现时,它使您能够快速导航到原始源代码(另请参见) 启用--dec

如果我们启用sourcemap,它允许我们在浏览器上进行调试。同样地,寻找declaration和declarationMap的用例


我已经在internet上搜索过了,但是我的bad除了生成.d.ts文件外,没有找到实际的用例。

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

IDE可以利用选项提供更好的开发人员体验:当您当前打开相应的
.d.ts
文件并希望查看其实现时,它使您能够快速导航到原始源代码(另请参见)

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

换句话说,在使用--declarationMap生成的.d.ts文件的声明上点击go to definition将带您到定义该声明的源文件(.ts)位置,而不是.d.ts


随着应用程序的增长,Typescript检查和编译代码的时间将越来越长。对于大型代码库,缓慢的编译时间会严重减慢开发速度。为了克服这个问题,从Typescript 3.0开始,您可以使用将大项目拆分为更小的子项目<代码>声明和
声明映射
选项在这里起着重要作用


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

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

当您将一个大项目拆分为多个子项目时,这会有所帮助。子项目可以访问彼此的声明文件。当您的一个子项目(例如B)依赖于另一个子项目(例如A)中声明的类型时,编译器使用子项目A中的
.d.ts
文件来检查和编译子项目B,而无需再次编译子项目A。这会加快大型项目中的编译时间


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

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


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

就这样!希望有帮助


如果您有一个文件超过150个左右的项目,建议使用将其拆分为更小的子项目。

Awesome:)明白了。。。我已经添加了一些包,比如
npm I faker
。那时,我无法在IDE中找到类型定义。因此,我添加了
npmi@types/faker
,它提供了一个.d.ts文件,让开发人员在IDE中有更好的体验。因此,它只是向开发人员提供类型定义,以及提供类型推断的类型脚本编译器。这对包的最终使用者有什么后果?例如,我应该将
declarationMap
映射保存在已发布的NPM包中,还是它们在这种情况下没有用处?@EricBurel,不需要将它们与最终的代码一起发布。它们只对开发人员有用。如果你正在写一个库,你应该把它们放在一个单独的包里。