类型推断主场迎战打字稿明确的类型声明

类型推断主场迎战打字稿明确的类型声明

问题描述:

我遇到其中变量的声明与即使推断出的类型是显而易见的显式类型的代码几种不同的情况:类型推断主场迎战打字稿明确的类型声明

例如:loading: boolean = falsename: string = "John"count: number = 0

TSLint支持显式类型的推断类型,所以我想知道这只是一个风格问题?在运行时间中,这些显式类型是否甚至重要?

在你的例子中,它只是关于样式,因此它从编译的角度对你的代码没有影响。请注意,这是针对变量值明确定义其类型的情况,这可能会使您的代码在从其他变量中取消值的情况下变得复杂。

换句话说,它可能是更好的你做:

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") 

注:未定义类型总是被认为是为已任。

+0

尽管您的日期示例确实不会产生错误,但如果bday实际上应该是Date,您将希望访问某些Date属性,或者想要将其用作参数,其中参数为Date,这会产生一个错误。我个人更喜欢在可能的情况下进行类型推理,但它可能只是我的懒惰:) –

+0

我的观点是在两种情况下都表现出错误的可能性。仅仅因为属性类型,这是非常常见的条件错误。我更喜欢尽可能少写,但我知道这会让我的代码难以阅读。 – Cleriston

声明的类型在运行时完全不重要。当生成Javascript时,所有类型都将被删除,因为Javascript不支持指定变量类型。至于为什么TSLint更喜欢类型推断或者直接输入,我会说它可能会让事情干涸(不要重复自己)。由于编译器可以为你输入,所以没有理由在代码中增加更多噪声。