首页 > 解决方案 > TypeScript 从参数枚举值推断函数返回类型

问题描述

我正在使用此函数将 enum 转换为一个对象,该对象具有属性的枚举值和它们的值的空选项列表:

export const createDictOfEmptyOptionListsFromEnum = ( 
  enum: Record<string | number, string | number>
) => {
  type OutputEntry = [number | string, Option[]];

  const enumValues = Object.values(enum);
  const entries = enumValues.map((val): OutputEntry => [val, []]);
  return Object.fromEntries(entries);
};

这导致返回类型为 { [k: string] : Option[] }

然后我需要手动缩小返回类型,如下所示:

type MyEnumOptionDict = { [k in MyEnum]: Option[] };
const dict: MyEnumOptionDict = createEmptyOptionDict(MyEnum);

有没有办法

  1. 使 Typescript 自动推断缩小的返回类型或
  2. 至少创建一个泛型类型,在提供枚举时返回缩小的输入类型

标签: typescriptenumstype-inferencereturn-type

解决方案


推荐阅读