如何为不在@types 中的类型配置 tsconfig.json?
Posted
技术标签:
【中文标题】如何为不在@types 中的类型配置 tsconfig.json?【英文标题】:How to configure tsconfig.json for typings not in @types? 【发布时间】:2018-07-20 02:59:33 【问题描述】:我正在使用 tsconfig.json 文件来指定我想在我的应用程序中使用哪些类型。
"compilerOptions":
"types" : ["node", "lodash", "express"]
这会从./node_modules/@types/node
、./node_modules/@types/lodash
和./node_modules/@types/expres
导入类型。
我的问题是如何为自包含模块配置类型?
我的示例是 zone.js 包,其中包含库代码和类型定义。
./node_modules/zone.js/dist/zone.js ./node_modules/zone.js/dist/zone.min.js ./node_modules/zone.js/dist/zone.js.d.ts我应该在我的 tsconfig.json 文件中添加什么以包含 zone.js.d.ts
?
【问题讨论】:
【参考方案1】:您只需将zone.js
添加到tsconfig.json
中的types
:
"compilerOptions":
"types" : ["node", "lodash", "express", "zone.js"]
请注意,您不必像这样包含所有类型。自动包含来自@types/*
包的类型定义。
因此您可以删除 tsconfig.json
中的类型声明,所有 @types/*
包将被自动引用。
为了让zone.js
工作,您可以将其包含在一个文件中,如下所示:
/// <reference types="zone.js" />
或者,如果您希望它在整个项目中可用,您可以在项目的根目录中添加 index.d.ts
并将引用放入其中。
【讨论】:
将其添加到types
数组中有效。奇怪的是,我第一次尝试时它对我不起作用。我猜我的编辑落后了。【参考方案2】:
您可以将文件放在任何位置,但您需要将其告知编译器,方法是将其添加到tsconfig.json
或///<reference>
。对于tsconfig
,添加include
字段:
"compileOnSave": false,
"compilerOptions":
..
,
"include": [
"zone.d.ts",
]
【讨论】:
以上是关于如何为不在@types 中的类型配置 tsconfig.json?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 useHitory() 覆盖非泛型类型,例如 @types/History?
如何为内容类型的响应正文提供示例值:Swagger 中的 text/html(使用 dredd 进行测试)