【发布时间】:2022-01-09 11:58:27
【问题描述】:
我有一个通用函数,我只想要对象的属性字符串:
type StringProps<T> = { [K in keyof T]: T[K] extends string ? K : never }[keyof T];
public someFunction<T extends { [key in string]: string }>(list: T[], props: StringProps<T>[]): void {
const foo: string[] = list.flatMap(item => props.map(prop => item[prop]));
}
当 T 是仅具有字符串类型属性的对象时,此方法有效。但是当对象有其他类型时它会失败。我可以将约束更改为:[key in string]: any,但我想尽可能避免使用任何(即使这里的任何都不重要。
简而言之:我如何创建一个约束来使用someFunction 与一个看起来像这样的对象:
{
age?: number,
name?: string,
}
【问题讨论】:
标签: typescript generics constraints