ts 常用api和特性
typeof
获取变量的类型:在运行时检查变量的类型
类型查询:在类型注解中引用现有变量的类型
cont person= { name: 'xman', age: 18 }; type Person = typeof person;
// 此时Person类型如下: type Person = { name: string, age: num }
keyof
提取对象类型的所有键,并将这些键组成一个联合类型
interface Person { name: string; age: number; } // keyof Person 得到 "name" | "age" type PersonKeys = keyof Person;
交叉类型
将多个类型进行合并成一个类型
type Person = { name: string; age: number; }
type Employee = Person & { employeeId: number; }
联合类型
联合类型通过|
符号连接多个类型从而生成新的类型。它主要是取多个类型的交集,即多个类型共有的类型才是联合类型最终的类型
type StringOrNumber = string | number;
索引签名
定义对象的属性类型和键类型
通过索引签名,可以定义对象的键和值的类型
interface StringArray {
[index: number]: string;
}
Enum
枚举是一个为一组相关值定义名字的方式。它是一种为一组常量赋予友好名字的方式,可以是数字或字符串。枚举使代码更具可读性和维护性。
enum Flag { success = 1, error = -1, '枚举' = 2, other, } let f: Flag = Flag.success console.log(f) 1 console.log(Flag.error) -1 console.log(Flag['枚举']) 2 // 不赋值,索引值 console.log(Flag.other) 4
interface User {
id: number;
name: string;
age: number;
email: string;
}
Partial
将一个类型的所有属性变为可选的
// 创建一个所有属性都是可选的 User
类型
let partialUser: Partial<User> = {};
Pick
从一个类型中选择一组属性,并构造一个新的类型
// 创建一个新的类型,只包含 id 和 name 属性 type UserIdAndName = Pick<User, 'id' | 'name'>;
Omit
从一个类型中排除指定的属性并构造一个新的类型
// 创建一个新的类型,排除 email 属性: type UserWithoutEmail = Omit<User, 'email'>;