在 TypeScript 中禁用一行的类型检查

在 TypeScript 中禁用一行的类型检查

Disable type checking for a Line in TypeScript

使用// @ts-ignore注释禁用 TypeScript 中一行的类型检查。该注释禁用了下一行的类型检查。如果您使用 linter,您可能需要为使用
// @ts-ignore注释的行禁用它。

索引.ts
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore function logMessage(message) { console.log(message); return message; }

// @ts-ignore注释禁用对下一行的所有类型检查。

请注意,我还添加了一个 eslint 注释以禁用禁止在代码中使用 ts 注释的规则。如果您没有启用此规则或不使用 eslint,则可能不必执行此操作。

如果需要对整个文件禁用类型检查,可以使用
// @ts-nocheck注释。

索引.ts
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck function logMessage(message) { console.log(message); return message; }

// @ts-nocheck注释指示 TypeScript 跳过对整个文件的类型检查。

您可能还会看到
@ts-expect-error
注释用于禁用下一行的类型检查。

索引.ts
// 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
是不必要的。

索引.ts
// 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如果下一行没有错误则不会提醒我们。

An example of when you would use the // @ts-expect-error comment is when you
have a function that takes a parameter of a specific type, but want to test that
it works as expected when passed a parameter of a different type.

index.ts
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'); }

The sum function in the example takes 2 numbers as parameters, but we want to
test if it works as expected when passed parameters of a different type.

Had we not used the // @ts-expect-error comment, we would get a type checking error, because the function expects number parameters.

Using this approach, we can test our function and would get a TypeScript error
if the // @ts-expect-error comment was unnecessary.