Typescript 将避免生成 any 类型的变量。当你在tsconfig.json中将选项noImplicityAny设置为true时,如果不指定类型,甚至会报错,Typescript只能将类型设置为any。
一般来说,当您在 let 中指定类型时,如您的示例中...
let myNumber: number = 23;
...您明确地设置了类型。这意味着您清楚地传达了使此变量成为number 的意图。当你分配一个非数字值时,你会得到一个错误。使用显式类型声明 all 变量并没有错,因为这只会提高代码的清晰度。
另一种选择是隐式输入变量。只有在声明时为变量赋值时才能做到这一点:
let myNumber = 23;
由于您将数字文字分配给变量,Typescript 可以推断变量的类型并将其视为数字。在某些情况下,覆盖推理很有用,例如对于联合类型:
let myNumberOrText: number | string = 23;
当您将noImplicitAny 设置为true 时,禁止对any 进行隐式输入。所以...
let myAny = { FirstName: "John", LastName: "Doe" };
...会导致错误,因为它会隐式键入any。显式版本仍然是允许的。所以你可以写...
let myAny: any = { FirstName: "John", LastName: "Doe" };
...尽管在 Typescript 中您最好声明一个类或接口并将其用于输入(假设您已声明一个类型 Person):
let myPerson: Person = { FirstName: "John", LastName: "Doe" };
Typescript 的全部意义在于将静态类型引入 JavaScript。如果你用 any 类型声明你的变量,你将没有静态类型的优势,你可以只使用纯 JavaScript。