Parameter properties can be confusing to those new to TypeScript as they are less explicit than other ways of declaring and initializing class members.
This rule disallows the use of parameter properties in constructors, forcing the user to explicitly declare all properties in the class.
This rule, in its default state, does not require any argument and would completely disallow the use of parameter properties. If you would like to allow certain types of parameter properties then you may pass an object with the following options:
allows
, an array containing one or more fo the allowed modifiers. Valid values are:readonly
, allows readonly parameter properties.private
, allows private parameter properties.protected
, allows protected parameter properties.public
, allows public parameter properties.private readonly
, allows private readonly parameter properties.protected readonly
, allows protected readonly parameter properties.public readonly
, allows public readonly parameter properties.
Examples of incorrect code for this rule with no options at all:
class Foo {
constructor(readonly name: string) {}
}
class Foo {
constructor(private name: string) {}
}
class Foo {
constructor(protected name: string) {}
}
class Foo {
constructor(public name: string) {}
}
class Foo {
constructor(private readonly name: string) {}
}
class Foo {
constructor(protected readonly name: string) {}
}
class Foo {
constructor(public readonly name: string) {}
}
Examples of correct code for this rule with no options at all:
class Foo {
constructor(name: string) {}
}
Examples of incorrect code for the { "allows": ["readonly"] }
options:
class Foo {
constructor(private name: string) {}
}
class Foo {
constructor(protected name: string) {}
}
class Foo {
constructor(public name: string) {}
}
class Foo {
constructor(private readonly name: string) {}
}
class Foo {
constructor(protected readonly name: string) {}
}
class Foo {
constructor(public readonly name: string) {}
}
Examples of correct code for the { "allows": ["readonly"] }
options:
class Foo {
constructor(name: string) {}
}
class Foo {
constructor(readonly name: string) {}
}
Examples of incorrect code for the { "allows": ["private"] }
options:
class Foo {
constructor(readonly name: string) {}
}
class Foo {
constructor(protected name: string) {}
}
class Foo {
constructor(public name: string) {}
}
class Foo {
constructor(private readonly name: string) {}
}
class Foo {
constructor(protected readonly name: string) {}
}
class Foo {
constructor(public readonly name: string) {}
}
Examples of correct code for the { "allows": ["private"] }
options:
class Foo {
constructor(name: string) {}
}
class Foo {
constructor(private name: string) {}
}
Examples of incorrect code for the { "allows": ["protected"] }
options:
class Foo {
constructor(readonly name: string) {}
}
class Foo {
constructor(private name: string) {}
}
class Foo {
constructor(public name: string) {}
}
class Foo {
constructor(private readonly name: string) {}
}
class Foo {
constructor(protected readonly name: string) {}
}
class Foo {
constructor(public readonly name: string) {}
}
Examples of correct code for the { "allows": ["protected"] }
options:
class Foo {
constructor(name: string) {}
}
class Foo {
constructor(protected name: string) {}
}
Examples of incorrect code for the { "allows": ["public"] }
options:
class Foo {
constructor(readonly name: string) {}
}
class Foo {
constructor(private name: string) {}
}
class Foo {
constructor(protected name: string) {}
}
class Foo {
constructor(private readonly name: string) {}
}
class Foo {
constructor(protected readonly name: string) {}
}
class Foo {
constructor(public readonly name: string) {}
}
Examples of correct code for the { "allows": ["public"] }
options:
class Foo {
constructor(name: string) {}
}
class Foo {
constructor(public name: string) {}
}
Examples of incorrect code for the { "allows": ["private readonly"] }
options:
class Foo {
constructor(readonly name: string) {}
}
class Foo {
constructor(private name: string) {}
}
class Foo {
constructor(protected name: string) {}
}
class Foo {
constructor(public name: string) {}
}
class Foo {
constructor(protected readonly name: string) {}
}
class Foo {
constructor(public readonly name: string) {}
}
Examples of correct code for the { "allows": ["private readonly"] }
options:
class Foo {
constructor(name: string) {}
}
class Foo {
constructor(private readonly name: string) {}
}
Examples of incorrect code for the { "allows": ["protected readonly"] }
options:
class Foo {
constructor(readonly name: string) {}
}
class Foo {
constructor(private name: string) {}
}
class Foo {
constructor(protected name: string) {}
}
class Foo {
constructor(public name: string) {}
}
class Foo {
constructor(private readonly name: string) {}
}
class Foo {
constructor(public readonly name: string) {}
}
Examples of correct code for the { "allows": ["protected readonly"] }
options:
class Foo {
constructor(name: string) {}
}
class Foo {
constructor(protected readonly name: string) {}
}
Examples of incorrect code for the { "allows": ["public readonly"] }
options:
class Foo {
constructor(readonly name: string) {}
}
class Foo {
constructor(private name: string) {}
}
class Foo {
constructor(protected name: string) {}
}
class Foo {
constructor(public name: string) {}
}
class Foo {
constructor(private readonly name: string) {}
}
class Foo {
constructor(protected readonly name: string) {}
}
Examples of correct code for the { "allows": ["public readonly"] }
options:
class Foo {
constructor(name: string) {}
}
class Foo {
constructor(public readonly name: string) {}
}
If you don't care about the using parameter properties in constructors, then you will not need this rule.
- TSLint: no-parameter-properties