我应该如何在 TypeScript 2 中使用 @types

How should I use @types with TypeScript 2

到目前为止我们已经习惯了 tsd 或(更好的版本)typings

但是现在 TypeScript 2 提供了新的 @types 功能,我应该如何将我当前的项目转换为使用 @types?

我有 tsd.json(某些情况下 typings.json)以及所有依赖项,迁移到 TypeScript 2 的步骤是什么?

最佳实践是什么? @types 是否支持特定版本?

看起来它们都是 npm 包,你可以找到所有支持的包 here

tsc 将选取 node_modules 文件夹中的任何类型。

您可以将 typings.json 中的依赖项移动到 package.json 中(前提是您更改名称太当然了)。

您可以阅读更多相关内容 here

很简单。只需通过 npm 安装您需要的定义即可。

例如,如果你需要 lodash,你可以这样做:

npm install --save @types/lodash

安装后您可以立即在您的项目中使用它。默认情况下,Typescript 将从 node_modules/@types 文件夹中解析已安装的 @types 包的类型。不再需要 tsd.jsontypings.json 文件。

加分:

  • npm中@types包的主次版本要与包版本相对应
  • 您可以在此处搜索类型:http://microsoft.github.io/TypeSearch/
  • 了解 typeRoots and types here。具体注意这两点:
    • 如果在tsconfig.json中指定typeRoots,则只有指定的文件夹将用于类型根目录。这将排除 ./npm_modules/@types/ 除非您指定它。
    • 如果在tsconfig.json中指定了types,则只包含指定的包。

在博客中阅读更多内容 post here

how should I convert my current project to work with @types

我绝对建议再坚持一段时间。

例如问题仍在解决中……就在 4 小时前:https://github.com/Microsoft/TypeScript/issues/9725#issuecomment-233469422

Typescript 2.0 摆脱了以前的 Typings 系统。
现在 Typescript 2.0 默认情况下应该查看 ./node_modules/@types 并获取您作为单独节点模块安装的类型,例如npm install --save @types/react(如@David Sherret 所述)

当前版本 Typescript 2.0 beta 存在错误,无法加载新类型。手动通过 cmd new tsc 编译文件,但是 VS 2015 中没有 IntelliSense 支持,并且 .ts 文件处于编辑模式时没有显示错误。

要解决此问题,请使用类似的设置修改 tsconfig.json

{
  "compilerOptions": {
     // ... other config rows 
   "typeRoots": [ "node_modules/@types/" ],
    "types": [ "jquery", "react", "react-dom", /*... your other types */ ],
  }
}

对我来说手动 "types" 声明帮助解决了这个问题,对其他人 "typeRoots" 帮助。希望它能节省开发人员的时间。