如何在项目之间共享 Typescript 类型?

How to share Typescript Types between Projects?

我有两个项目(客户端和服务器)应该共享相同的定义。为了实现这一点,我将我的定义 (.d.ts) 外包在一个额外的 npm 包中,我通过 npm link 链接回这两个项目。两个主要项目无法识别新 npm 包中的类型。我尝试了 package.json (types) 设置和 tsconfig.json (types, typeRoot) 中的一些设置的各种组合,但我没有得到正确的组合.

我必须在定义包和主要包中设置什么才能使其正常工作?

不幸的是,您没有提供足够的信息来推断出了什么问题。首先,如果你在 node_moudels 中使用 index.d.ts 并放入你的 npm 包的根目录,typescript 应该自动使用包中的类型,不需要额外的设置。

但是,只有当您键入 JavaScript 代码(编译代码)时,您才使用 index.d.ts 文件。如果您只想共享类型,请使用 index.ts,然后包含共享类型所在文件夹的路径 "typeRoots"

typestypeRoots 对我不起作用,我尝试了很多不同的 paths/combinations(尤其是 typeRoots)。

最后我添加了行

"include": [
    ...,
    "node_modules/<my-npm-package>/*.ts"
],

在 tsconfig.json 中,我的外包打字在项目中可用。