变量的类型注解(Type Annotations)
当你使用 const、var 或 let 声明变量时,可以选择添加类型注解,以显式指定变量的类型:
let name: string = "洛尘"
TypeScript 不使用 “类型在左侧” 的声明风格(例如 int x = 0;)。在 TypeScript 中,类型注解始终位于被标注的变量或表达式之后。
不过,在大多数情况下,这并不是必需的。TypeScript 会尽可能自动推断代码中的类型。例如,变量的类型可以根据它的初始值进行推断:
// 无需类型注解 —— 'name' 被推断为 'string' 类型
let name = "洛尘";
作为 TypeScript 新手,我们不需要刻意学习类型推断的规则。而是尝试减少类型注解的使用,去探索 TypeScript 能够多大程度上理解你的代码,更直观的感受 TypeScript 的类型推断。
类型:any
TypeScript 提供了一个特殊的类型 any,当你不希望某个值导致类型检查错误时,可以使用它。
当一个值的类型是 any 时,你可以执行以下操作:
- 将任何类型的变量赋值给它
let point: any = {
x: 1,
y: 2,
}
- 访问它的任何属性(这些属性的类型也将是 any)。
console.log(point.x)
- 将其当作函数调用
point()
4.将它赋值给任何类型的变量。
const x: number = obj;
5.执行任何在语法上合法的操作。
point.calc()
上面的例子,都不会导致类型错误,但是可能会在运行时报错。
所以 any 类型在你不想写出冗长的类型定义,只是为了让 TypeScript 认可某行代码时,会非常有用。
tips:
当你没有指定类型,并且 TypeScript 无法从上下文推断出类型时,编译器通常会默认使用 any 类型。 然而,通常你会想避免这种情况,因为 any 不会进行类型检查。你可以使用编译器选项
noImplicitAny,将所有隐式的 any 类型标记为错误,从而提高代码的类型安全性。