1.0.0 • Published 2 years ago
eslint-plugin-redundant-undefined v1.0.0
eslint-plugin-redundant-undefined
Forbids optional parameters to include an explicit
undefinedin their type and requires to useundefinedin optional properties.
Installation
$ npm i eslint-plugin-redundant-undefined @typescript-eslint/parser --save-devUsage
Add redundant-undefined to the plugins section of your .eslintrc configuration file. You can omit the eslint-plugin- prefix:
{
"parser": "@typescript-eslint/parser",
"plugins": ["redundant-undefined"]
}Then configure the rules you want to use under the rules section.
{
"rules": {
"redundant-undefined/redundant-undefined": "error"
}
}Rule Details
- Avoid explicitly specifying
undefinedas a type for a parameter/property which is already optional
Options
followExactOptionalPropertyTypes- Requires explicitly specifyingundefinedas a type for a parameter which is already optional., this provides the correct semantics for people who haveexactOptionalPropertyType: true
Examples
Examples of incorrect code:
function f(s?: undefined | string): void {}
function f(s?: number | undefined | string): void {}
interface I {
a?: string | undefined;
}
class C {
a?: string | undedined;
}Examples of correct code:
function f(s?: string): void {}
interface I {
a?: string;
}
interface I {
a?: any;
}
class C {
a?: string;
}Examples of incorrect code for the { "followExactOptionalPropertyTypes": true }:
interface I {
p?: string;
}
class C {
private p?: number;
}
abstract class C {
abstract p?: string;
}Examples of correct code for the { "followExactOptionalPropertyTypes": true }:
interface I {
p?: string | undefined;
}
interface I {
p?: any;
}
class C {
private p?: number | undefined;
}
abstract class C {
abstract p?: string | undefined;
}License and Copyright
This software is released under the terms of the MIT license.