有没有办法在 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,是哪个版本的。