TypeScript 文字类型生成器

TypeScript literal type generator

我正在尝试创建一个可以 return 纠正输入的动作生成器。 所以我有以下代码:

const createAsyncActionWithTypes = (prefix: string, name: string) => [
    `@${prefix}/${name}_REQUEST`,
    `@${prefix}/${name}_SUCCESS`,
    `@${prefix}/${name}_FAILURE`,
  ] as const;

const requestPersonActions = createAsyncActionWithTypes('person', 'GET_PERSON');

此函数使 requestPersonActions 成为以下类型:

const requestPersonActions: readonly [
  `@${string}/${string}_REQUEST`, 
  `@${string}/${string}_SUCCESS`, 
  `@${string}/${string}_FAILURE`
]

我想要的是 createAsyncActionWithTypes 函数生成以下类型:

const requestPersonActions: readonly [
  `@person/GET_PERSON_REQUEST`, 
  `@person/GET_PERSON_SUCCESS`, 
  `@person/GET_PERSON_FAILURE`
]

可能吗?

你必须使用generics

const createAsyncActionWithTypes = <T extends string, U extends string>(prefix: T, name: U) => [
    `@${prefix}/${name}_REQUEST`,
    `@${prefix}/${name}_SUCCESS`,
    `@${prefix}/${name}_FAILURE`,
  ] as const;

const requestPersonActions = createAsyncActionWithTypes('person', 'GET_PERSON');

TypeScript playground