在Typescript中键入推断与显式类型声明

时间:2017-08-28 03:24:40

标签: angular typescript

我遇到了几个不同的代码实例,其中变量是使用显式类型声明的,即使推断类型很明显:

示例:loading: boolean = falsename: string = "John"count: number = 0等。

TSLint偏爱显式类型的推断类型,所以我想知道这只是一个风格问题吗?这些显式类型在运行时是否也很重要?

3 个答案:

答案 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社区的人都会支持推理,从而激发他们的选择,即以某种方式更容易阅读类型推断,但是阅读的便利性无法衡量,这只是个人喜好的问题。在与只根据自己的品味来激发自己的位置的人一起工作之前,请三思而后行。

要开放,尝试两种方法都选择最适合您的方法,或者按照团队的决定去做。

我个人更喜欢显式类型,我的可测观察结果告诉我,显式类型可以改善与代码简单性或冗长程度相关的代码度量,您不必费力确定要使用哪种类型,而且您不太可能使用犯一个错误。