我遇到了几个不同的代码实例,其中变量是使用显式类型声明的,即使推断类型很明显:
示例:loading: boolean = false
或name: string = "John"
或count: number = 0
等。
TSLint偏爱显式类型的推断类型,所以我想知道这只是一个风格问题吗?这些显式类型在运行时是否也很重要?
答案 0 :(得分:1)
声明的类型在运行时根本不重要。生成Javascript时,将删除所有类型,因为Javascript不支持指定变量类型。
至于为什么TSLint更喜欢明确打字的类型推断,我会说这可能是为了让事情干涸(不要自己重复)。由于编译器可以为您打字,因此没有理由为代码添加更多噪音。
答案 1 :(得分:1)
在您的示例中,它只是关于样式,因此,从编译角度来看,它对您的代码没有影响。请注意,这是针对变量值明确定义其类型的情况,这可能会使您在从其他变量中重新赋值时难以读取代码。
换句话说,你可能会做得更好:
name: string = "John"
bday: Date = "1980/01/10" //the compiler says there is an error
并避免:
name = "John"
bday = "1980/01/10" //no compiling error, but it should be new Date("1980/01/10")
注意:未定义的类型将始终视为任何类型。
答案 2 :(得分:0)
当今大多数javascript社区的人都会支持推理,从而激发他们的选择,即以某种方式更容易阅读类型推断,但是阅读的便利性无法衡量,这只是个人喜好的问题。在与只根据自己的品味来激发自己的位置的人一起工作之前,请三思而后行。
要开放,尝试两种方法都选择最适合您的方法,或者按照团队的决定去做。
我个人更喜欢显式类型,我的可测观察结果告诉我,显式类型可以改善与代码简单性或冗长程度相关的代码度量,您不必费力确定要使用哪种类型,而且您不太可能使用犯一个错误。