1. 联合类型
1 2 3
| let a: string | number = '123' a = 123
|
2. Pick
选择
1 2 3 4 5 6
| type UserInfo = { name: string; age?: number; sex: number; } const c: Pick<UserInfo, "name" | "age"> = { name: "", age: 12 };
|
3. Omit
类似于 Exclude, 可以排除类型中一部分的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| type UserInfo = { uid: string; name: string; password: string; created: number; updated: number; }
type RegisterUser = Omit<UserInfo, 'uid' | 'created' | 'updated'> const h: RegisterUser = {}
|
4. keyof
将一个类型的属性名全部提取出来当做联合类型
1 2 3 4 5 6 7 8 9 10 11
| type UserInfo = { name: string; age: number; sex: number; }
type Users = keyof UserInfo; const p1: Users = 'name' const p2: Users = 'age'
|
5. Record
在 TS 中,类似数组、字符串、数组、接口这些常见的类型都非常常见,但是如果要定义一个对象的 key 和 value 类型该怎么做呢?这时候就需要用到 TS 的 Record 了
1 2 3 4 5 6 7 8 9 10 11
| interface PageInfo { title: string; }
type Page = "home" | "about" | "contact";
const nav: Record<Page, PageInfo> = { home: { title: "home" }, about: { title: "about" }, contact: { title: "contact" }, };
|
6. Exclude
(排除) 可以排除 联合类型 中一部分的内容
1 2 3 4 5
| type MyTypes = 'name' | 'age' | 'sex';
const e: Exclude<MyTypes, "name"> = 'age';
|
7. Partial
(部分的; 不完全的) ts中就是让一个定义中的所有属性都变成可选 有时候模拟数据时数据不全,但又不想(或不能)破坏原有结构
1 2 3 4 5 6
| type UserInfo = { name: string; age?: number; sex: number; } const a: Partial<UserInfo> = {}
|
8. Required
(必须的) 和Partial刚好相反,将一个定义中的属性全部变成必选
1 2 3 4 5 6
| type UserInfo = { name: string; age?: number; sex: number; } const b: Required<UserInfo> = { name: "", age: 12, sex: 1 };
|
9. Readonly
(只读) 就是让一个定义中的所有属性都变成只读参数
1 2 3 4 5 6
| type UserInfo = { name: string; age?: number; sex: number; } const d: Readonly<UserInfo> = { name: "", sex: 1 }
|