Open myml opened 5 years ago
class Test { a: string; b: number; c() {} }
type ObjectKey<T> = keyof T
例
ObjectKey<Test> = 'a' | 'b' | 'c'
type ObjectValue<T> = T[keyof T]
ObjectValue<Test> = string | number | (() => void)
type ObjectPartial<T> = { [K in keyof T]?: T[K] };
ObjectPartial<Test> = class Test { a?: string; b?: number; c?() {} }
type ObjectDelete<T, D extends keyof T> = { [K in Exclude<keyof T, D>]: T[K] }; 例
type ObjectDelete<T, D extends keyof T> = { [K in Exclude<keyof T, D>]: T[K] };
ObjectDelete<Test> = class Test { b: number; c() {} }
type ObjectKeyFilterByValue<T, V> = { [K in keyof T]: T[K] extends V ? K : never }[keyof T];
例子
ObjectKeyFilterByValue<Test,string> = { a: string }
预定义对象
类型为对象键名
例
类型为对象属性类型
例
转换对象属性为可选
例
去除对象属性
type ObjectDelete<T, D extends keyof T> = { [K in Exclude<keyof T, D>]: T[K] };
例用对象属性类型过滤属性
例子