在VSCode中,当我添加以下类型的代码时,lint tslint会抱怨:
serverId: number = 10;
并给出以下消息:
[tslint]从数字文字中简单推断出的类型数字,删除类型注释(no-inferrable-types)
当我删除“数字”类型时,消息消失了。
为什么在此处包括类型信息是不好的做法?
在VSCode中,当我添加以下类型的代码时,lint tslint会抱怨:
serverId: number = 10;
并给出以下消息:
[tslint]从数字文字中简单推断出的类型数字,删除类型注释(no-inferrable-types)
当我删除“数字”类型时,消息消失了。
为什么在此处包括类型信息是不好的做法?
Answers:
这不是一个坏习惯,但却serverId: number = 10
是多余的,因为在分配属性时number
会推断类型。这是TSLintno-inferrable-types
警告的内容:
编译器可以轻松推断出的显式类型使代码更加冗长。
除非serverId
可以最初不定义属性,但以后再定义属性(例如在constructor
函数中),否则number
可以安全地将其省略。
这种方法与noImplicitAny
option一起使用效果最佳,因为通过这种方式,没有机会因为没有推断出类型而将其错误地省略。
如上所述,它在技术上是多余的,可以被认为是混乱的。就我个人而言,我并不在乎这种观点,并且出于各种特定的次要工作流原因,更倾向于同时拥有类型和值,并且我不认为这是确保规则杂乱无章的水平。如果要禁用它,请按以下步骤操作。
ignore-properties
到其数组相关的tslint文档 https://palantir.github.io/tslint/rules/no-inferrable-types/
现在可能对此很奇怪,但是我遇到了类似的错误,并且在我的角度应用程序的tslint.json文件中找不到“ no-inferrable-types”属性。我不知道为什么它最初没有生成,但是我不得不在这里插入
"rules": {
**"no-inferrable-types": false,**
"directive-selector": [
true,
"attribute",
"app",
"camelCase"
],
然后它就像一个魅力!
PS:这适用于可能和我一样遇到同样问题的人,或者我可能错了,因为在任何解决方案中都没有人提到必须在json文件中添加此内容。
在tslint.json文件中添加或完成以下规则:
"no-inferrable-types": [
true,
"ignore-params",
"ignore-properties"
]