如何为不在@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///&lt;reference&gt;。对于tsconfig,添加include 字段:


    "compileOnSave": false,
    "compilerOptions": 
        ..
    ,
    "include": [
        "zone.d.ts",
    ]

【讨论】:

以上是关于如何为不在@types 中的类型配置 tsconfig.json?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 useHitory() 覆盖非泛型类型,例如 @types/History?

如何为不在更新方法中的游戏手柄按钮按下创建事件处理程序

如何为不在第 2 列中的第 1 列选择 SQL

如何为内容类型的响应正文提供示例值:Swagger 中的 text/html(使用 dredd 进行测试)

如何为 react-native 本机 ui 组件创建打字稿类型定义?

如何为多个泛型类型使用关键字`where`? [复制]