如何忽略 TypeScript 文件中的错误

忽略 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 的参数但是,我们想测试函数在使用. stringnumber

如果我们不添加@ts-expect-error注释,我们将得到一个类型检查错误,因为该函数需要一个string, 而不是一个number.

这样我们仍然可以测试我们的功能,如果不需要@ts-expect-error评论,我们会收到提醒。

发表评论