有没有办法在 TypeScript 2+ 中全局添加类型定义?
Is there a way to add type definition globally in TypeScript 2+?
我有一堆简单的 .ts
文件。 不是项目(即独立的 .ts 脚本)。
他们使用一些 node.js 功能。
TypeScript 和节点类型定义通过
安装
npm install -g typescript
npm install -g @types/node
问题:在 windows 我可以 运行 tsc foo.ts
没有问题。它将 .ts 转换为 .js 就好了。
但是在 Ubuntu 16.04 上它给了我 error TS2304: Cannot find name 'require'
、error TS2304: Cannot find name 'process'
等等。
即使将 /// <reference types="node" />
添加到 foo.ts
的顶部或添加 --types node
切换到 tsc,我也会得到 error TS2688: Cannot find type definition file for 'node'
。
看起来在 Windows 中全局安装某些类型可以正常工作,但在 Ubuntu 中却不行,所以我假设这不是设计使然。
那么有没有办法全局安装它们呢?或者更准确地说:在 Ubuntu?
上引用全局安装的类型定义
我找到了解决方案。我必须手动指定 typeRoots
以及通向 npm 安装的全局包的路径。
像这样:tsc --typeRoots /usr/lib/node_modules/@types
(您可以通过 npm root -g
获取您系统的路径)。
仍然不确定为什么它在 Windows 上没有任何特殊工作而没有在 Ubuntu 上查找它们。不知道是不是bug,是哪个版本的。
我有一堆简单的 .ts
文件。 不是项目(即独立的 .ts 脚本)。
他们使用一些 node.js 功能。
TypeScript 和节点类型定义通过
npm install -g typescript
npm install -g @types/node
问题:在 windows 我可以 运行 tsc foo.ts
没有问题。它将 .ts 转换为 .js 就好了。
但是在 Ubuntu 16.04 上它给了我 error TS2304: Cannot find name 'require'
、error TS2304: Cannot find name 'process'
等等。
即使将 /// <reference types="node" />
添加到 foo.ts
的顶部或添加 --types node
切换到 tsc,我也会得到 error TS2688: Cannot find type definition file for 'node'
。
看起来在 Windows 中全局安装某些类型可以正常工作,但在 Ubuntu 中却不行,所以我假设这不是设计使然。 那么有没有办法全局安装它们呢?或者更准确地说:在 Ubuntu?
上引用全局安装的类型定义我找到了解决方案。我必须手动指定 typeRoots
以及通向 npm 安装的全局包的路径。
像这样:tsc --typeRoots /usr/lib/node_modules/@types
(您可以通过 npm root -g
获取您系统的路径)。
仍然不确定为什么它在 Windows 上没有任何特殊工作而没有在 Ubuntu 上查找它们。不知道是不是bug,是哪个版本的。