Disallow type assertions in TypeScript code. The rule will forbid both as
operator and the angle-bracketed syntax, unless used for const assertions or with the unknown
type. The rule also forbids non-null assertions.
The following code becomes invalid:
const foo: unknown = 42;
const notAString = <string>foo; // can't perform angle-bracketed type assertion
const alsoNotAString = foo as string; // can't use `as` operator for type assertion
const objectWithOptionalProperty: { a?: number } = {};
const notANumber = objectWithOptionalProperty.a! / 2; // can't use non-null assertion operator
Ensure you have ESLint and @typescript-eslint/parser
installed:
$ yarn add eslint @typescript-eslint/parser -D
Next, install this plugin:
$ yarn add eslint-plugin-no-type-assertion -D
In your ESLint configuration, ensure you're using @typescript-eslint/parser
as a parser and it's set up correctly:
{
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2018
}
}
Add eslint-plugin-no-type-assertion
to the plugin list:
{
"plugins": ["no-type-assertion"]
}
Enable the rule:
{
"rules": {
"no-type-assertion/no-type-assertion": "error"
}
}