我有一个函数,它接受一个字符串数组,并返回一个以数组中的每个元素为键的Map。我希望返回的类型能反映这一点。
这就是我现在的状态(Playground):
function register<T extends string>(name: string, events: readonly T[]): { [S in T]: string } {
const r = events.reduce((p, el) => {
p[el] = `${name}:${el}`;
return p;
}, {} as { [S in T]: string });
return r;
}
const colors = ["blue", "green", "red", "yellow"] as const;
const x = register<typeof colors[number]>('foo', colors)
console.log(x.blue, x)
有没有办法一步到位呢?
const x = register<...?...>('foo', ["blue", "green", "red", "yellow"])
1条答案
按热度按时间q3qa4bjr1#
这是令人尴尬的:)我只是试图至少用两步方法更新我的代码,看起来如果我省略泛型声明,Typescript足够聪明,可以找出其余部分: