typescript - typings 可以从 package.json 自动安装 d.ts 吗?

标签 typescript typescript-typings

我在项目中安装了大约二十个模块,现在我想使用typescript。但是我需要一个一个地安装d.ts。太无聊了那么有没有办法让 typings 自动从 package.json 安装 d.ts 呢?

最佳答案

建议的解决方案

您可以使用 typings 工具,正如 SnareChops 所建议的那样,但是在 package.json 中分配了一个“postinstall”脚本来在安装后运行 typings install 命令,只是请务必将 typings 添加为开发依赖项,如下所示:

{
  "name": "my-project",
  "version": "1.0.0",
  "description": "My project description",
  "main": "index.js",
  "author": "CodeAnimal",
  "scripts": {
    "postinstall": "typings install"
  },
  "devDependencies": {
    "typings": "^1.3.1"
  }
}

更多信息

关于自动查找 typescript 定义,这就是 typings 在某种程度上的作用,因为它 searches many sources找到定义文件。不幸的是,定义文件的名称可能与 npm 模块名称不同,这意味着没有类型工具的自动安装是不可能的,除非包的创建者将定义包含在包中(见下文)。

如果您以前使用过 tsd,您现在应该迁移到 typings .


对于包创建者

如果您正在创建 npm 包并使用 TypeScript 1.6+,则可以使用 package.jsontypings”属性将 TypeScript 定义文件包含在包本身中>:

{
    "name": "my-project",
    "main": "lib/index.js",
    "typings": "lib/index",
    "files": [
        "lib/"
    ]
    // etc
}

只需确保在 TypeScript 项目的 tsconfig.json 文件中将 declaration 指定为 true:

{
    "version": "1.6.2",
    "compilerOptions": {
        "module": "commonjs",
        "declaration": true,
        "outDir": "lib/"
    },
    "files": [
        "./src/index.ts"
    ]
}

有一个很棒的article on how to do this在 medium 上,这是我最初了解到这一点的地方。

如果所有包作者都这样做,那么 typings 工具在技术上将变得多余,它只需要所有 IDE 使用 typings 包属性来知道访问哪里给定模块/包的定义文件。当然,这将要求所有作者要么使用 TypeScript(并自动生成定义文件),要么让他们手动创建定义文件并使它们与他们所做的任何代码更改保持同步。这是因为后者,可以理解的是,创建者不会为不是用 TypeScript 编写的项目手动创建定义文件,像 typings 这样的工具与一个活跃的社区一起存在来创建这些定义对于那些确实想使用 TypeScript 的人。

关于typescript - typings 可以从 package.json 自动安装 d.ts 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38343233/

相关文章:

reactjs - 使用 TypeScript 在 useState React Hook 上设置类型

typescript - 创建一个用对象的值构造的类型

typescript - 如何为自定义 chai 断言添加 typehint?

typescript :用其他类型的键定义类型

angular - Angular 中的文件输入事件类型

javascript - 使用 npm angular2 导入库

javascript - 通过 webpack 从 typescript 导出对象并在 JS 中使用

javascript - 在另一个组件上使用 ngFor 的信息

angular - 在 Angular 4 中使用渲染器

node.js - 如何导入没有可用类型的 npm 模块?