TypeScript日常类型(3): Type Annotations on Variables 和 Any

69 阅读2分钟

变量的类型注解(Type Annotations)

当你使用 const、var 或 let 声明变量时,可以选择添加类型注解,以显式指定变量的类型:

let name: string = "洛尘"

TypeScript 不使用 “类型在左侧” 的声明风格(例如 int x = 0;)。在 TypeScript 中,类型注解始终位于被标注的变量或表达式之后。

不过,在大多数情况下,这并不是必需的。TypeScript 会尽可能自动推断代码中的类型。例如,变量的类型可以根据它的初始值进行推断:

// 无需类型注解 —— 'name' 被推断为 'string' 类型
let name = "洛尘";

image.png

作为 TypeScript 新手,我们不需要刻意学习类型推断的规则。而是尝试减少类型注解的使用,去探索 TypeScript 能够多大程度上理解你的代码,更直观的感受 TypeScript 的类型推断。

类型:any

TypeScript 提供了一个特殊的类型 any,当你不希望某个值导致类型检查错误时,可以使用它。

当一个值的类型是 any 时,你可以执行以下操作:

  1. 将任何类型的变量赋值给它
let point: any = {
    x: 1,
    y: 2,
}

  1. 访问它的任何属性(这些属性的类型也将是 any)。
console.log(point.x)

image.png

  1. 将其当作函数调用
point()

4.将它赋值给任何类型的变量。

const x: number = obj;

5.执行任何在语法上合法的操作。

point.calc()

上面的例子,都不会导致类型错误,但是可能会在运行时报错。

所以 any 类型在你不想写出冗长的类型定义,只是为了让 TypeScript 认可某行代码时,会非常有用。

tips:

当你没有指定类型,并且 TypeScript 无法从上下文推断出类型时,编译器通常会默认使用 any 类型。 然而,通常你会想避免这种情况,因为 any 不会进行类型检查。你可以使用编译器选项 noImplicitAny,将所有隐式的 any 类型标记为错误,从而提高代码的类型安全性。