Use `// @ts-expect-error` over `// @ts-ignore`JS-0372
TypeScript allows you to suppress all errors on a line by placing a single-line comment 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-ignores
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.
Bad Practice
// @ts-ignore
const str: 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];
};
Recommended
// @ts-expect-error
const str: 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];
};