Typescript:使用动态字段名获取唯一的值列表
有一节课。比如说:Typescript:使用动态字段名获取唯一的值列表,typescript,Typescript,有一节课。比如说: class Foo { a: string; b: number; } 和一个函数来获取新的唯一值集 getUniqueSet<T, K extends keyof T>(arr: T[], key: K): Set<T[K]> { return new Set<T[K]>(arr.map(item => item[key])) } 我的目标是传递一组字段名(fieldNames),并基于foos数据收集为每个字段获取
class Foo {
a: string;
b: number;
}
和一个函数来获取新的唯一值集
getUniqueSet<T, K extends keyof T>(arr: T[], key: K): Set<T[K]> {
return new Set<T[K]>(arr.map(item => item[key]))
}
我的目标是传递一组字段名(
fieldNames
),并基于foos
数据收集为每个字段获取唯一值。简单:您可以将fieldNames
定义为Foo(keyof Foo)[
的键数组。
并非所有字符串都是Foo的键,因此编译器会给出一个错误
const fieldNames: (keyof Foo)[] = ['a', 'b'];
const foos: Foo[] = [{ a: '1', b: 1 }, { a: '2', b: 2 }];
fieldNames.forEach((fieldName) => {
// Simplified code
let uniqueSet = getUniqueSet(foos, fieldName);
});
简单:您可以将
字段名定义为Foo(keyof Foo)[
的键数组。
并非所有字符串都是Foo的键,因此编译器会给出一个错误
const fieldNames: (keyof Foo)[] = ['a', 'b'];
const foos: Foo[] = [{ a: '1', b: 1 }, { a: '2', b: 2 }];
fieldNames.forEach((fieldName) => {
// Simplified code
let uniqueSet = getUniqueSet(foos, fieldName);
});
谢谢,成功了,谢谢,成功了。