我正在Webstorm中使用以下文件结构处理一个项目
| src
| ...
| many files
| types
| SomeInterface
| index.d.ts
| AnotherInterface
| index.d.ts
| index.d.ts
我想使SomeInterface
全球可用(使用接口,无需导入)。
我的主要index.d.ts
如下所示:
import { SomeInterface } from './SomeInterface'
import { AnotherInterface} from './AnotherInterface'
declare global {
interface MainInterface extends SomeInterface {
someAttribute?: number[]
names: SomeInterface[]
contactData: AnotherInterface[]
}
}
每当我尝试在src/some/path/to/file.ts
中实现类型定义时:
function someFunctionName(parsedData: MainInterface):void{...}
我收到以下消息:ESLint: 'MainInterface' is not defined.(no-undef)
这是我当前的tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"allowJs": true,
"checkJs": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"noImplicitAny": false,
"baseUrl": "./",
"paths": {
"*": ["src/*"]
}
},
"include": ["src", "types/index.d.ts"],
"exclude": ["node_modules"]
}
我错过了什么吗?我知道,使全球可用的东西是不建议的,但我被要求以这种方式具体。
2条答案
按热度按时间eeq64g8w1#
typescript-eslint常见问题解答提供了以下指导:
我们强烈建议您不要在TypeScript项目上使用no-undef lint规则。它提供的检查已经由TypeScript提供,无需配置- TypeScript只是在这方面做得更好。
但是
no-undef
对JavaScript很有用,所以如果你有混合使用,最好只对使用TypeScript的文件禁用它,例如Vue + TypeScript:当然,不要使用JavaScript编写Vue文件,因为
no-undef
是禁用的。xkrw2x1b2#
如果您在代码中定义了自定义全局变量,则需要将它们告知ESLint:https://eslint.org/docs/user-guide/configuring#specifying-globals
尽管如此,我还是会考虑关闭
no-undef
规则,因为TypeScript本身已经涵盖了这一检查。