Recommends using @ts-expect-error
over @ts-ignore
.
TypeScript allows you to suppress all errors on a line by placing a single-line comment or a comment block line starting with @ts-ignore
immediately before the erroring line.
While powerful, there is no way to know if a @ts-ignore
is actually suppressing an error without manually investigating what happens when the @ts-ignore
is removed.
This means its easy for @ts-ignore
s to be forgotten about, and remain in code even after the error they were suppressing is fixed.
This is dangerous, as if a new error arises on that line it'll be suppressed by the forgotten about @ts-ignore
, and so be missed.
To address this, TS3.9 ships with a new single-line comment directive: // @ts-expect-error
.
This directive operates in the same manner as @ts-ignore
, but will error if the line it's meant to be suppressing doesn't actually contain an error, making it a lot safer.
This rule looks for usages of @ts-ignore
, and flags them to be replaced with @ts-expect-error
.
Examples of code for this rule:
// @ts-ignore
const str: string = 1;
/**
* Explaining comment
*
* @ts-ignore */
const multiLine: number = 'value';
/** @ts-ignore */
const block: string = 1;
const isOptionEnabled = (key: string): boolean => {
// @ts-ignore: if key isn't in globalOptions it'll be undefined which is false
return !!globalOptions[key];
};
// @ts-expect-error
const str: string = 1;
/**
* Explaining comment
*
* @ts-expect-error */
const multiLine: number = 'value';
/** @ts-expect-error */
const block: string = 1;
const isOptionEnabled = (key: string): boolean => {
// @ts-expect-error: if key isn't in globalOptions it'll be undefined which is false
return !!globalOptions[key];
};
If you are NOT using TypeScript 3.9 (or greater), then you will not be able to use this rule, as the directive is not supported
- ✅ Recommended
- 🔧 Fixable
- 💭 Requires type information