目录
Disable type checking for JavaScript files in TypeScript
- 在 TypeScript 中禁用对整个文件的类型检查
- 在 TypeScript 中禁用一行的类型检查
- 在 TypeScript 中禁用 JavaScript 文件的类型检查
- 在 TypeScript 中禁用 node_modules 的类型检查
在 TypeScript 中禁用对整个文件的类型检查
使用// @ts-nocheck
注释禁用 TypeScript 中整个文件的类型检查。
注释// @ts-nocheck
指示 TypeScript 在类型检查时跳过文件。
如果您使用 linter,您可能需要在注释行中禁用它。
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck console.log('no errors' / 0); console.log('no errors' / 0);
如果您需要在 TypeScript 中禁用 JavaScript 文件的类型检查,请向下滚动到下一个子标题。
@ts-nocheck注释
禁用对整个文件的类型检查。
评论// @ts-nocheck
必须放在文件的顶部。
ban-ts-comment
一行的规则。在 TypeScript 中禁用一行的类型检查
使用// @ts-ignore
注释禁用 TypeScript 中一行的类型检查。
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore console.log('no error' / 0);
该// @ts-ignore
注释禁用对下一行的所有类型检查。
您可能还会看到
用于禁用下一行类型检查的@ts-expect-error注释。
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error console.log('hello world' / 0);
将// @ts-expect-error
抑制下一行的任何类型错误,但如果没有任何错误,TypeScript 将通知我们 using@ts-expect-error
是不必要的。
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error console.log('hello world' / 0); // ⛔️ Error: Unused '@ts-expect-error' directive.ts(2578) // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error console.log(100 * 100);
这是ts-ignore 和 ts-expect-error 之间的主要
区别——
// @ts-ignore
如果下一行没有错误则不会提醒我们。
何时使用// @ts-expect-error
注释的一个示例是,当您有一个函数接受特定类型的参数,但您想要测试它在传递不同类型的参数时是否按预期工作。
function sum(a: number, b: number) { if (typeof a !== 'number' || typeof b !== 'number') { return 0; } return a + b; } // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error const result = sum('hello', 'world'); if (result === 0) { console.log('✅ Test passes'); }
sum
示例中的函数采用 2 个数字作为参数,但我们想测试在传递不同类型的参数时它是否按预期工作。
// @ts-expect-error
注释,我们会得到类型检查错误,因为该函数需要数字参数。使用这种方法,我们可以测试我们的函数,如果注释是不必要的,则会出现 TypeScript 错误// @ts-expect-error
。
在 TypeScript 中禁用 JavaScript 文件的类型检查
使用// @ts-nocheck
注释禁用 TypeScript 文件中的所有类型检查。
// 👇️ ts-nocheck disables type checking for the entire file // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck // 👇️ ts-ignore ignores any ts errors on the next line // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore function multiply(a, b) { return a * b; }
@ts-nocheck注释
禁用对整个文件的类型检查。
ban-ts-comment
上一行中的规则。如果需要禁用 JavaScript 文件的所有类型检查,则必须
在tsconfig.json文件中设置checkJs选项。false
{ "compilerOptions": { "allowJs": true, "checkJs": false, // ... your other options } }
allowJs选项允许您在 TypeScript 项目中导入 JavaScript 文件。
.ts
和扩展名的文件,但启用后,您还可以在您的 TypeScript 文件中导入和文件。 .tsx
allowJs
.js
.jsx
启用该checkJs
选项后,将在项目中的所有 JavaScript 文件中报告错误。
checkJs
为false
禁用 TypeScript 项目中 JavaScript 文件的所有错误报告,但您仍然可以导入和使用您的 Javascript 文件,因为该allowJs
选项设置为true
。如果只想禁用单行的类型检查,可以使用注释
// @ts-ignore
。
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore function multiply(a, b) { return a * b; }
该// @ts-ignore
注释禁用下一行的所有类型检查错误。
如果您使用 linter,您可能必须为您使用的行禁用它,@ts-ignore
因为大多数 linter 都有禁止使用 ts 注释的规则。
在 TypeScript 中禁用 node_modules 的类型检查
node_modules
要在 TypeScript 中
禁用类型检查,请在您的文件中将skipLibCheck
属性设置为。true
tsconfig.json
打开您的tsconfig.json
文件并将skipLibCheck
属性设置为true
.
{ "compilerOptions": { "skipLibCheck": true, // ... other settings } }
该skipLibCheck
选项指示 TypeScript 编译器跳过声明 ( .d.ts
) 文件的类型检查。
--skipLibCheck
您可以通过在使用命令行时传递标志来获得相同的结果。
tsc --skipLibCheck
确保node-modules
在你的exclude
数组中
如果错误未解决,请确保文件exclude
中的数组
tsconfig.json
包含目录路径node_modules
。
{ "compilerOptions": { "skipLibCheck": true, // ... other settings }, "include": ["src/**/*"], "exclude": ["node_modules"] }
确保您使用的是
最新版本的 TypeScript
,因为该skipLibCheck
选项在某些旧版本中不起作用。
当该skipLibCheck
选项设置为false
时,当您的目录中存在库类型的多个副本时,您经常会遇到问题node_modules
。
也可能是两个库以不一致的方式定义了相同类型的副本。
当skipLibCheck
设置为 时true
,您通常会在编译期间节省时间。
即使该设置禁用了d.ts
文件的类型检查,TypeScript 仍会对您在应用程序源代码中具体引用的代码进行类型检查。