// @ts-expect-error
over // @ts-ignore
JS-03721/* eslint-disable @typescript-eslint/ban-ts-comment */
2/* eslint-disable @typescript-eslint/no-var-requires */
3/* eslint-disable node/no-process-env */
4// @ts-ignore5const isCi = process.env.CI !== undefined || process.env.CI_USE_HUSKY === 'true'
6if (!isCi) {
7 require('husky').install()
1/* eslint-disable @typescript-eslint/ban-ts-comment */
2/* eslint-disable @typescript-eslint/no-var-requires */
3/* eslint-disable node/no-process-env */
4// @ts-ignore 5const isCi = process.env.CI !== undefined
6const override = process.env.OVERRIDE_CI !== undefined
7const skip = process.env.SKIP_PI !== undefined
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.
// @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];
};
// @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];
};