鉴于有一个第三方模块foo
没有为foo/src
键入内容,而我需要导入一个子模式并以与主模块类似的方式键入它:
index.ts
import * as foo from "foo/src";
console.log(foo);
custom_typings / foo-src.d.ts
declare module "foo/src" {
import * as foo from "foo";
export = foo;
}
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"baseUrl": "./",
"paths": {
"*" : ["custom_typings/*"]
}
},
"files": [
"index.ts"
]
}
我遇到错误:
找不到模块'foo / src'的声明文件。 '... / node_modules / foo / src / index.js'隐式具有'any'类型。
尝试
npm install @types/foo
(如果存在)或添加包含declare module 'foo/src';
的新声明(.d.ts)
为什么foo/src
导入时会忽略 custom_typings / foo-src.d.ts 声明文件?即使该声明有误,也必须为入门者识别。
答案 0 :(得分:1)
如果启用traceResolution
编译器选项,则会看到custom_typings/foo-src.d.ts
的错误路径由baseUrl
和paths
设置加载:文件应该位于custom_typings/foo/src.d.ts
或custom_typings/foo/src/index.d.ts
。加载文件的其他可能方式包括将其添加到files
/ include
或使用自定义typeRoots
;您没有任何一个设置。