有没有办法在 TypeScript 2+ 中全局添加类型定义?

Dan*_* M. 10 javascript ubuntu node.js typescript definitelytyped

我有一堆简单的.ts文件。不是项目(即独立的 .ts 脚本)。他们使用一些 Node.js 功能。TypeScript 和节点类型定义通过安装

npm install -g typescript
npm install -g @types/node
Run Code Online (Sandbox Code Playgroud)

问题:在 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 上全局安装的类型定义?

Dan*_* M. 6

我找到了解决方案。我必须手动指定typeRootsnpm 安装的全局包的路径。像这样:(tsc --typeRoots /usr/lib/node_modules/@types您可以通过获取系统的路径npm root -g)。

仍然不知道为什么它在 Windows 上不需要任何特殊工作就可以查找它们,而在 Ubuntu 上却不行。无法判断这是否是一个错误,以及如果是在哪个版本中。