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

gil*_*ran 48 typescript tsd typescript-typings

到目前为止,我们被用来TSD或(更好的版本吧)分型

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

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

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

Dav*_*ret 58

这很简单.只需通过npm安装所需的定义即可.

例如,如果您需要lodash,您可以:

npm install --save @types/lodash
Run Code Online (Sandbox Code Playgroud)

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

附加要点:

  • npm中@types包的主要版本和次要版本应与包版本相对应.
  • 您可以在此处搜索类型:http://microsoft.github.io/TypeSearch/
  • 阅读typeRootstypes此处.特别要注意这两点:
    • 如果typeRootstsconfig.json中指定,则只有指定的文件夹将用于类型根.除非您指定,否则将排除./npm_modules/@types/.
    • 如果typestsconfig.json中指定,则仅包含指定的包.

这里的博客文章中阅读更多内容.


Art*_*tru 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 */ ],
  }
}
Run Code Online (Sandbox Code Playgroud)

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