typescript 以字符串数组为参数的函数,返回具有相同数组键的类型化map

lstz6jyr  于 2023-04-07  发布在  TypeScript
关注(0)|答案(1)|浏览(121)

我有一个函数,它接受一个字符串数组,并返回一个以数组中的每个元素为键的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"])
q3qa4bjr

q3qa4bjr1#

这是令人尴尬的:)我只是试图至少用两步方法更新我的代码,看起来如果我省略泛型声明,Typescript足够聪明,可以找出其余部分:

相关问题