我是Typescript的新手,我知道与大型应用程序和团队合作时它的巨大好处:)
假设我有这个TypeScript:
declare const num = 5: number;
为什么比以下更好?
const num = 5
我应该始终在TypeScript中显式声明(使用类型)简单变量吗?
幸运的是,变量的类型是从值的数据类型推断出来的。 那么我可以使用普通的JS(如第二个示例中所示)吗?
答案 0 :(得分:3)
声明变量时,如果TS编译器可以正确理解分配给它的类型,则无需定义其类型。在许多情况下,不需要声明显式类型,例如使用const num = 5
。但是有时 是必需的,例如声明一个变量,该变量将在以后(而不是现在)分配给它:
let someData: MyData;
否则,someData
将被键入为any
,这不是类型安全的。
另一个有用的例子是创建一个数组,稍后将其推送到:
const arr: number[] = [];
// later:
arr.push(5);
编译器无法在arr
的声明中推断 数组可能包含的值,因此在定义number[]
时应包括arr
。 (否则,它将被键入为any[]
,并且any
不是类型安全的,应尽可能避免使用)
只要TS 可以正确且自动地推断变量的类型-在大多数情况下,它就可以-然后随意忽略变量类型的显式注释,因为它不会没有帮助。
请注意,declare
做的事情完全不同 -使用该关键字告诉TS,其他代码在当前范围内定义了具有该名称的变量,例如通过图书馆。发出的代码中将不存在declare
d变量。除非您有一个库或定义Typescript无法理解的变量的东西存在,否则几乎可以肯定不希望使用declare
。
答案 1 :(得分:0)
您正在使用打字稿来避免错误的值分配。例如,当您尝试将字符串用作数字变量时,打字稿将引发错误。
let num: number = 5;
您不能将其更改为num = "this is a string";
。 Typescript将引发类型错误。