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'>;

posted on 2024-07-07 23:24  sss大辉  阅读(34)  评论(0编辑  收藏  举报

导航