Ts 类型使用
207字小于1分钟
2025-02-21
type复杂类型使用案例
1. 获取函数返回值类型
type GetReturnType<T> = T extends (...args: any[]) => infer R ? R : never
2. 获取函数参数类型
type GetParameters<T> = T extends (...args: infer P) => any ? P : never
3. 获取数组类型
type GetArrayItem<T> = T extends (infer E)[] ? E : never
4. 获取元组类型
type GetTupleItem<T, K extends number = 0> = K extends keyof T ? T[K] : never
function复杂类型使用案例
函数重载
obj
参数必须为对象类型key
参数必须为对象属性名- 返回值为对象属性值类型
// 签名声明
function getObjectValue<T extends object,K extends keyof T>(obj: T, key: K):T[K];
function getObjectValue<T extends object>(obj: T):T[keyof T];
// 函数实现
function getObjectValue<T extends object>(obj: T, key?: keyof T):T[keyof T] {
return key ? obj[key] : obj[keyof T]
}