【发布时间】:2019-07-16 01:37:40
【问题描述】:
我有一些属性类型为字符串、数字等的类型,我想省略一些类型不是字符串的属性。
Omit<T, U> 泛型只是省略了属性名称,而不是属性类型。
例如:
class Person {
name: string;
age: number;
eat(food: Food): void;
walk(miles: number): void;
read(book: Book): void;
}
// =>
type PersonAbility = PickAbility<Person>;
// how can i write a PickAbility<T> generic, results:
type PersonAbility = {
eat(food: Food): void;
walk(miles: number): void;
read(book: Book): void;
}
如上面的代码。
我已经尝试过了:
type PersonAbility = {
[K in keyof Person]: Person[K] extends (payload: {}) => Promise<{}> ? Person[K] : never
};
// it results:
type PersonAbility = {
name: never;
age: never;
eat: (food: Food) => void;
walk: (miles: number) => void;
read: (book: Book) => void;
}
上面的代码将不需要的属性设置为never,但不删除它。
【问题讨论】:
标签: typescript