【发布时间】:2018-03-10 07:53:05
【问题描述】:
我正在考虑在发货前使用TSLint 对我的代码进行静态分析。但是我有很多我认为不准确的错误。
例如,如果我分析这行代码:
let hello = "Hello!";
我从TypeScript官方网站得到的,我在TSLint中得到了这个错误:
期望 'hello' 有一个 typedef
为了避免这个错误,我必须改变我的代码:
let hello:string = "Hello!";
继续指定类型似乎很丑陋和多余。
我应该忽略这些类型的错误还是使用第二个代码?
【问题讨论】:
-
是否应该完全取决于您。
-
如果你想使用一个 lint 程序,你应该考虑它可能警告你的所有事情,并决定你需要哪组警告来满足你的特定编码约定。在任何情况下,您都不应该使用 lint 程序并简单地假设每个警告都是您关心的事情。
-
TypeScript 的想法是——你猜对了——使用类型。如果不想使用类型,可以禁用
typedeftslint 规则或者改用纯js。不过,我建议在任何地方指定类型。 -
@kamyl 在打字稿中当您执行
let hello = "Hello!"时,变量hello被键入为string,您不必在这样的简单情况下明确告诉编译器。关键是,尽管有些人可能会觉得明确指定所有类型更清晰,因此 TSLint 允许您强制执行这种编程风格。我们中的其他人认为更简洁的编码是一件好事,所以当它们被正确推断时我们会忽略类型,所以如果我使用 TSLint,我会禁用该警告。我们都没有错,这完全取决于风格。 -
我通常允许隐式类型,但无论我在哪里指定类型,我总是使用在冒号周围放置空格的模式,例如
let hello : string = "Hello!;"或(first : string, last : string) => {...}.我认为它看起来很多更整洁,更好地区分类型规范和对象分配。
标签: typescript