HogoZhang
·

TypeScript 高级类型技巧

分享一些实用的 TypeScript 高级类型技巧,帮助你写出更健壮的类型定义。


条件类型

条件类型是 TypeScript 中最强大的特性之一:

type IsString<T> = T extends string ? true : false;

type A = IsString<string>;  // true
type B = IsString<number>;  // false

映射类型

使用映射类型可以基于现有类型创建新类型:

type Readonly<T> = {
  readonly [P in keyof T]: T[P];
};

type Partial<T> = {
  [P in keyof T]?: T[P];
};

实用工具类型

Pick 和 Omit

interface User {
  id: number;
  name: string;
  email: string;
  age: number;
}

type UserPublicInfo = Pick<User, 'name' | 'email'>;
type UserWithoutId = Omit<User, 'id'>;

Record

type PageInfo = {
  title: string;
};

type Page = 'home' | 'about' | 'contact';

const nav: Record<Page, PageInfo> = {
  home: { title: '首页' },
  about: { title: '关于' },
  contact: { title: '联系' },
};

总结

掌握这些类型技巧,可以让你的 TypeScript 代码更加类型安全。