我有一个使用CRA打字稿创建的项目。
在项目的根目录中有tsconfig.json
和一个名为types
的文件夹。在类型文件夹中,我为一个模块创建了modulename.d.ts
文件,该模块在node_modules上没有默认类型,在@types\module-name
上也没有任何内容。
但是在编译时出现错误。
类型错误:找不到模块'thename'的声明文件。 “ /*/node_modules/thename/dist/entry.js”隐式具有“ any”类型。
为什么编译器在类型文件夹中找不到类型声明?
// .d.ts
declare module 'foo-react' {
import * as React from 'react';
// ...
}
这是tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": { "*": ["types/*"] },
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"plugins": [{ "name": "typescript-tslint-plugin" }],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve"
},
"include": ["src"]
}
答案 0 :(得分:0)
原来如此
types
文件夹(我在项目根目录中自定义的文件夹)的路径应添加到include
属性,而不是paths
属性。 "include": ["src", "./types"]
types
文件夹中,其结构类似于types/<module_name>/index.d.ts
。现在,该索引文件可以将该模块声明为any
或详细声明所有类型。