忽略 TypeScript 文件中的错误
How to Ignore errors in TypeScript files
用于// @ts-ignore
忽略 TypeScript 文件中下一行的类型检查错误。如果您使用 linter,则可能必须添加注释以在使用ts-ignore
–
时也抑制 linting 错误// eslint-disable-next-line @typescript-eslint/ban-ts-comment
。
索引.ts
// 👇️ ts-nocheck ignores all ts errors in the 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 sum(a, b) { return a + b; }
我们使用注释来忽略 TypeScript 文件中的错误。
该示例显示如何使用
@ts-nocheck
注释来禁用整个文件的类型检查。
索引.ts
// 👇️ ts-nocheck ignores all ts errors in the file // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck
当您的项目启用了 JavaScript 文件的类型检查时,您通常必须禁用整个文件的类型检查。
@ts-nocheck
注释是在 TypeScript 版本中添加的。如果您运行的是旧版本,则必须更新或坚持使用注释来禁用特定行的类型检查。 3.7
@ts-ignore
// @ts-ignore
您可以使用注释忽略单行的类型检查错误
。
索引.ts
// 👇️ this ignores any ts errors on the next line // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore function sum(a, b) { return a + b; }
// @ts-ignore
注释忽略下一行发生的任何类型检查错误。
如果您使用 linter,当您使用注释禁用一行或整个文件的类型检查时,您可能会遇到错误。
还有一个注释
@ts-expect-error
可以抑制下一行的任何类型错误。但是,如果没有任何错误,TypeScript 会警告 using@ts-expect-error
是不必要的。
索引.ts
// ✅ THIS IS OK // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error console.log('hello' / 0); // ⛔️ Error: Unused '@ts-expect-error' directive.ts(2578) // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error console.log(2 + 2);
第一个例子有一个错误,因为我们不能将字符串hello
除以
0
。
但是,第二个示例没有任何错误,因此 TypeScript 提醒我们
@ts-expect-error
没有必要使用。这是
ts-ignore 和 ts-expect-error 之间的主要区别——
// @ts-ignore
如果下一行没有错误则不会提醒我们。
例如,@ts-expect-error
如果您有一个函数接受 type 的参数string
,但需要使用不同类型的参数对其进行测试,则可以使用。
索引.ts
function logMessage(message: string) { if (typeof message !== 'string') { return 'message has to be a string'; } console.log(message); return message; } // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error const result = logMessage(42); if (result === 'message has to be a string') { console.log('test successful'); }
示例中的
logMessage
函数采用 type 的参数。但是,我们想测试函数在使用. string
number
如果我们不添加@ts-expect-error
注释,我们将得到一个类型检查错误,因为该函数需要一个string
, 而不是一个number
.
这样我们仍然可以测试我们的功能,如果不需要@ts-expect-error
评论,我们会收到提醒。