TypeScript 类型系统详解

51 阅读1分钟

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 {
  namestring;
  age?: number;  // 可选属性
  readonly idnumber;  // 只读属性
}

type Point = {
  xnumber;
  ynumber;
};

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 的类型系统非常强大,可以帮助开发者编写更健壮、可维护的代码。