到目前为止,我们习惯于tsd或(它的更好版本)类型
但是既然 TypeScript 2 提供了新@types
功能,我应该如何将我当前的项目转换为使用 @types?
我有所有依赖项的 tsd.json(在某些情况下是 typings.json),迁移到 TypeScript 2 的步骤是什么?
有哪些新的最佳实践?@types 是否支持特定版本?
到目前为止,我们习惯于tsd或(它的更好版本)类型
但是既然 TypeScript 2 提供了新@types
功能,我应该如何将我当前的项目转换为使用 @types?
我有所有依赖项的 tsd.json(在某些情况下是 typings.json),迁移到 TypeScript 2 的步骤是什么?
有哪些新的最佳实践?@types 是否支持特定版本?
这很简单。只需通过 npm 安装您需要的定义。
例如,如果您需要 lodash,您可以执行以下操作:
npm install --save @types/lodash
安装后,您可以立即在项目中使用它。默认情况下,Typescript 将从node_modules/@types文件夹中解析已安装的 @types 包的类型。不再需要tsd.json或typings.json文件。
附加点:
typeRoots
和types
这里。具体要注意这两点:
typeRoots
在tsconfig.json中指定,则只有指定的文件夹将用于类型根。这将排除./npm_modules/@types/除非您指定它。types
在tsconfig.json中指定,则仅包含指定的包。在此处的博客文章中阅读更多信息。
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"
帮助。希望它可以节省开发人员的时间。
我应该如何将我当前的项目转换为使用@types
我绝对建议坚持一段时间。
例如,问题仍在修复中……就在 4 小时前:https ://github.com/Microsoft/TypeScript/issues/9725#issuecomment-233469422