我已经通过从jsdocs生成的声明文件(.d.ts
)为a library添加了类型支持。然而,当库被使用时(例如import foo from 'the-library/foo'
),TypeScript会抱怨Cannot find module … or its corresponding type declarations .ts(2307)
。奇怪的是(可能是一个红鲱鱼),VS Code中的cmd + click不再跳转到该文件。
库没有捆绑,因此类型也没有捆绑。TS documentation on publishing a library只涵盖了捆绑的场景(这没有意义,因为库通常没有捆绑)。
单个声明文件与实现文件位于同一位置,如下所示:
./lib/
├ foo.js
└ foo.d.ts
字符串
我的package.json导出类型:
{
"name": "the-library",
"type": "module",
"files": ["./lib/**/*"],
"exports": {
"foo": {
"default": "./lib/foo.js",
"types": "./lib/foo.d.ts"
}
}
}
型
我尝试在package.json中使用一个barrel types文件的根级别“types”字段,但产生了相同的TS错误。
生成的声明文件看起来很好,在库中,VS Code IntelliSense可以很好地使用它们。
我在SO上看到的所有问题似乎都是通过“重新启动TS服务器”来回答的,我这样做无济于事。
1条答案
按热度按时间ogq8wdun1#
TypeScript抱怨
Cannot find module … or its corresponding type declarations .ts(2307)
。奇怪的是(可能是一个红鲱鱼),在VS代码中的cmd + click不再跳转到文件。这是由一个太快的n-肮脏的minimum-repo设置引起的:VS Code(TypeScript)只是在没有
tsconfig.json
(在消费项目中)时发脾气。它需要moduleResolution
(它使用"moduleResolution": "NodeNext"
并且没有指定其他编译器选项)。没有tsconfig,它会抛出一堆误导性错误(想象一下TypeScript抛出误导性错误?永远不会...)。为了让TypeScript能够获取这些类型,它们确实需要包含在库的package.json的导出中(就像它们在问题中一样)。忽略它们会导致消费项目中的
Cannot find module … or its corresponding type declarations
相同。