第1部分--使用“类型”字段的示例
TypeScript库A除了提供的“正常”导出之外,还提供了类型定义,如下所示:
declare global {
function someGlobalFunction(): void;
}库B使用库A的类型定义,因此,在B库的tsconfig.json中,我们将:
"types": ["library-a"],通过这样做,使用error.
第2部分-A Monorepo
我有一个TypeScript单峰。(它使用NX作为monorepo工具,Yarn作为包管理器,但这可能并不重要,因为这个问题适用于任何类型的TypeScript monorepo。)
如果类库A和库B都在我的monorepo中,如何复制第1部分中的设置?
首先,monorepo使用tsconfig.json文件中的tsconfig.json字段,以便包可以相互导入,而不必实际安装它们。这是琐碎的事情,而且效果很好。但是,如果我们使用types字段,它就会崩溃,因为paths和types似乎没有被编程一起工作。具体地说:
"types": ["library-a"],TypeScript就找不到它,说没有找到library-a。如果我尝试添加一个typeRoots字段来指向正确的"dist“目录,那么我可以克服这个错误,但是对于所有的单个符号仍然会得到一堆”未找到“的错误。如果我只是直接安装library-a,那么一切都能工作,但是这样做首先会失败使用monorepo的全部点。H 227f 228包从monorepo中的另一个包导入类型的正确方法是什么?
如果需要的话,我可以提供一个最小的reprex回购来说明问题。
发布于 2022-08-14 02:06:35
我在library-b的tsconfig.json中成功地实现了您想要的结果。
{
"compilerOptions": {
"types": ["../library-a"],
"typeRoots": ["../library-a/types"],
"paths": {
"library-a": ["../library-a/index.ts"]
}
}
}有关完全复制,请参见https://github.com/Maxim-Mazurok/ts-2libs。
万一我弄错了-请分叉或提供你自己的复制品。
https://stackoverflow.com/questions/73262618
复制相似问题