Tslint - type trivially inferred - Why is it bad practice to include the type here?
Solution 1
It is not a bad practice, but serverId: number = 10
is redundant, because number
type is inferred when a property is assigned. This is what TSLint no-inferrable-types
warns about:
Explicit types where they can be easily inferred by the compiler make code more verbose.
Unless there is a chance that serverId
property may be initially undefined but be defined later (for instance in constructor
function), number
can be safely omitted.
This approach works best with noImplicitAny
option because this way there are no chances that a type will be omitted by mistake because it wasn't inferred.
Solution 2
As was mentioned above, it's technically redundant and can be considered clutter. Personally I don't care for this opinion and prefer to have both the type and the value for a variety of specific minor workflow reasons and I don't consider it to be the level of clutter warranting a rule. If you want to disable it, here's how.
- open tslint.json
- find the "no-inferrable-types" attribute
- add
ignore-properties
to its array
relevant tslint docs https://palantir.github.io/tslint/rules/no-inferrable-types/
Solution 3
This error is due to your configuration in tslint.json
file.
Either just initialize your variable as
serverId = 10;
or
serverId: number;
or just set your configuration for the no-inferrable-types
in your tslint.json file as
no-inferrable-types: false
Solution 4
If you came here looking for an eslint solution because tslint is being deprecated, add this rule to your .eslintrc.js
file:
module.exports = {
...m
rules: {
...,
"@typescript-eslint/no-inferrable-types": "off",
...
},
};
Solution 5
It is unnecessary, it does not provide any new information. It is basically a comment saying "10 is a number".
Tony Scialo
Software developer for Google with a Masters of Computer Science at UF. I have a passion for web development, algorithm analysis and design, and the entire SDLC.
Updated on June 08, 2020Comments
-
Tony Scialo almost 4 years
In VSCode the linter , tslint, complains when I add the following code, with the type:
serverId: number = 10;
And gives the following message:
[tslint] Type number trivially inferred from a number literal, remove type annotation (no-inferrable-types)
When I remove the type 'number', the message goes away.
Why is it bad practice to include the type information here?