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

时间:2016-07-18 19:10:47

标签: typescript tsd typescript-typings

到目前为止,我们习惯于 tsd 或(更好的版本)打字

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

我有tsd.json(typings.json是一些情况),包含所有依赖项,移动到TypeScript 2的步骤是什么?

新的最佳做法是什么? @types是否支持特定版本?

4 个答案:

答案 0 :(得分:56)

这很简单。只需通过npm安装所需的定义。

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

npm install --save @types/lodash

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

补充要点:

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

在博文here中阅读更多内容。

答案 1 :(得分:38)

Typescript 2.0 摆脱了之前的打字系统 现在 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"帮助解决了这个问题。希望它能节省开发人员的工作时间。

答案 2 :(得分:3)

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

tsc 会选择 node_modules 文件夹中的所有类型。

您可以在 package.json 中移动 typings.json 中的相关性(前提是您更改了名称)。

您可以详细了解here

答案 3 :(得分:2)

  

如何将当前项目转换为使用@types

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

e.g。问题仍在解决......仅仅4个小时前:https://github.com/Microsoft/TypeScript/issues/9725#issuecomment-233469422