在Typescript中声明变量时使用类型有什么意义?

时间:2020-05-28 21:21:59

标签: javascript typescript

我是Typescript的新手,我知道与大型应用程序和团队合作时它的巨大好处:)

假设我有这个TypeScript:

declare const num = 5: number;

为什么比以下更好?

const num = 5

我应该始终在TypeScript中显式声明(使用类型)简单变量吗?

幸运的是,变量的类型是从值的数据类型推断出来的。 那么我可以使用普通的JS(如第二个示例中所示)吗?

2 个答案:

答案 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将引发类型错误。