TypeScript 类型系统详解
1. 基础类型
TypeScript 提供了与 JavaScript 相同的基础类型,并增加了类型注解:
let isDone: boolean = false;
let count: number = 10;
let name: string = "TypeScript";
let list: number[] = [1, 2, 3];
let tuple: [string, number] = ['hello', 10];
2. 特殊类型
- any : 任意类型
- void : 无返回值
- never : 永不存在的值
- unknown : 类型安全的any
3. 接口与类型别名
interface Person {
name: string;
age?: number; // 可选属性
readonly id: number; // 只读属性
}
type Point = {
x: number;
y: number;
};
4. 联合与交叉类型
type ID = number | string;
type Admin = Person & { permissions: string[] };
5. 泛型
function identity<T>(arg: T): T {
return arg;
}
class GenericNumber<T> {
zeroValue: T;
add: (x: T, y: T) => T;
}
6. 实用类型
TypeScript 提供了许多内置实用类型:
- Partial : 使所有属性可选
- Required : 使所有属性必选
- Readonly : 使所有属性只读
- Pick<T, K> : 从T中选取部分属性
- Omit<T, K> : 从T中排除部分属性
7. 类型推断与类型守卫
TypeScript 能自动推断类型,也可使用类型守卫缩小类型范围:
function isString(test: any): test is string {
return typeof test === 'string';
}
8. 高级类型
- 条件类型: T extends U ? X : Y
- 映射类型: { [P in K]: T }
- 模板字面量类型: type EventName = 'click' | 'scroll' | 'mousemove' TypeScript 的类型系统非常强大,可以帮助开发者编写更健壮、可维护的代码。