如何在项目之间共享 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"
。
types
和 typeRoots
对我不起作用,我尝试了很多不同的 paths/combinations(尤其是 typeRoots
)。
最后我添加了行
"include": [
...,
"node_modules/<my-npm-package>/*.ts"
],
在 tsconfig.json 中,我的外包打字在项目中可用。
我有两个项目(客户端和服务器)应该共享相同的定义。为了实现这一点,我将我的定义 (.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"
。
types
和 typeRoots
对我不起作用,我尝试了很多不同的 paths/combinations(尤其是 typeRoots
)。
最后我添加了行
"include": [
...,
"node_modules/<my-npm-package>/*.ts"
],
在 tsconfig.json 中,我的外包打字在项目中可用。