类型系统基础
TypeScript 的核心优势之一就是其强大的类型系统。本章节将介绍最常用的基础类型以及它们的使用方式。
原始类型
TypeScript 支持 JavaScript 中的所有原始类型:
let num: number = 42;
let str: string = "Hello, TypeScript!";
let isActive: boolean = true;
let u: undefined = undefined;
let n: null = null;
let sym: symbol = Symbol("unique");
注意:null 和 undefined 默认在非严格模式下是所有类型的子类型。
数组与元组
数组(Array)
定义一个元素类型为 number 的数组:
let numbers: number[] = [1, 2, 3];
或使用泛型写法:
let strings: Array<string> = ["a", "b", "c"];
元组(Tuple)
元组用于定义已知长度和类型顺序的数组:
let person: [string, number] = ["Alice", 30];
枚举(Enum)
枚举用于定义一组命名常量:
enum Direction {
Up,
Down,
Left,
Right,
}
let dir: Direction = Direction.Up;
也可以使用字符串枚举:
enum Status {
Success = "success",
Failure = "failure",
}
任意类型与类型推断
any
any 表示放弃类型检查,等同于 JavaScript 的动态类型:
let value: any = 123;
value = "string";
value = true;
不推荐在实际项目中过多使用。
unknown
unknown 表示类型未知,但更安全(使用前必须先做类型判断):
let input: unknown = "hello";
if (typeof input === "string") {
console.log(input.toUpperCase());
}
类型推断
TypeScript 会自动根据初始值推断变量类型:
let count = 100; // 推断为 number
类型别名与交叉类型
类型别名(type)
可以使用 type 为复杂类型取别名,简化书写:
type Point = {
x: number;
y: number;
};
let p: Point = { x: 10, y: 20 };
交叉类型(&)
交叉类型将多个类型合并为一个:
type A = { name: string };
type B = { age: number };
type C = A & B;
let person: C = { name: "Tom", age: 25 };
相关内容
- 函数与类型 TypeScript 中函数相关的类型注解方式,包括参数与返回值类型、可选与默认参数、剩余参数,以及函数重载的用法。
- 接口与对象类型 TypeScript 中接口(interface)与对象类型的使用方法,包括 interface 与 type 的区别、可选与只读属性、索引签名以及函数类型定义...
- TypeScript 简介 TypeScript 是由 Microsoft 开发的开源编程语言,它是 JavaScript 的一个超集(superset),也就是说,所有合法的 JavaS...
- 高级类型 介绍 TypeScript 中的高级类型,包括联合类型、类型保护、类型断言、字面量类型、映射类型、条件类型等,帮助开发者灵活使用复杂的类型。
- 类与面向对象 TypeScript 中类的定义方式、继承机制、访问修饰符,以及如何结合接口使用类,并了解抽象类与多态的基础用法。
- 泛型 TypeScript 中泛型的基本概念和用法,包括泛型函数、接口、类,以及泛型约束和默认类型等,帮助开发者灵活构建通用的类型。