预期 'var' 有一个 typedef
Posted
技术标签:
【中文标题】预期 \'var\' 有一个 typedef【英文标题】:Expected 'var' to have a typedef预期 'var' 有一个 typedef 【发布时间】:2018-03-10 07:53:05 【问题描述】:我正在考虑在发货前使用TSLint 对我的代码进行静态分析。但是我有很多我认为不准确的错误。
例如,如果我分析这行代码:
let hello = "Hello!";
我从TypeScript官方网站得到的,我在TSLint中得到了这个错误:
期望 'hello' 有一个 typedef
为了避免这个错误,我必须改变我的代码:
let hello:string = "Hello!";
继续指定类型似乎很丑陋和多余。
我应该忽略这些类型的错误还是使用第二个代码?
【问题讨论】:
是否应该完全取决于您。 如果你想使用一个 lint 程序,你应该考虑它可能警告你的所有事情,并决定你需要哪组警告来满足你的特定编码约定。在任何情况下,您都不应该使用 lint 程序并简单地假设每个警告都是您关心的事情。 TypeScript 的想法是——你猜对了——使用类型。如果不想使用类型,可以禁用typedef
tslint 规则或者改用纯js。不过,我建议在任何地方指定类型。
@kamyl 在打字稿中当您执行let hello = "Hello!"
时,变量hello
被键入为string
,您不必在这样的简单情况下明确告诉编译器。关键是,尽管有些人可能会觉得明确指定所有类型更清晰,因此 TSLint 允许您强制执行这种编程风格。我们中的其他人认为更简洁的编码是一件好事,所以当它们被正确推断时我们会忽略类型,所以如果我使用 TSLint,我会禁用该警告。我们都没有错,这完全取决于风格。
我通常允许隐式类型,但无论我在哪里指定类型,我总是使用在冒号周围放置空格的模式,例如 let hello : string = "Hello!;"
或 (first : string, last : string) => ...
.我认为它看起来很多更整洁,更好地区分类型规范和对象分配。
【参考方案1】:
当 TSLint 或其他工具说出一些愚蠢的话时,重要的是我们(作为聪明的人)告诉它其他内容。
在某些情况下,您可能希望提示输入显式类型注释(可能更多使用函数),但变量不是这样的地方。
理想情况下,您应该得到TSLint to prompt you to remove easily inferred types。
【讨论】:
以上是关于预期 'var' 有一个 typedef的主要内容,如果未能解决你的问题,请参考以下文章
@State var 在 LazyVGrid 中未按预期更新
无法导入模块“复制”:/var/task/psycopg2/_psycopg.so:ELF 文件的 phentsize 不是预期的大小