到目前为止,我们习惯于 tsd 或(更好的版本)打字
但是现在TypeScript 2提供了新的@types
功能,我应该如何将当前项目转换为@types?
我有tsd.json(typings.json是一些情况),包含所有依赖项,移动到TypeScript 2的步骤是什么?
新的最佳做法是什么? @types是否支持特定版本?
答案 0 :(得分:56)
这很简单。只需通过npm安装所需的定义。
例如,如果你需要lodash,你可以这样做:
npm install --save @types/lodash
安装完成后,您可以立即在项目中使用它。 Typescript将默认从 node_modules / @ types 文件夹中解析已安装的@types包的类型。不再需要 tsd.json 或 typings.json 文件。
补充要点:
typeRoots
and types
here。特别要注意这两点:
typeRoots
,则只有指定的文件夹才会用于类型根目录。除非您指定,否则将排除 ./ npm_modules / @ types / 。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