TypeScript:具有变量结构的方法的返回类型

o4hqfura  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(110)

我有一个方法,它接受一个对象的属性数组,并返回一个具有给定形状的对象:

// sample class
class T {
  propA: number;
  propB: string;

  method() {}

}

function myMethod(obj: any, properties: string[]): MyMethodReturnType {
   // implementation
}

const obj = new T();

const result = myMethod(obj, ['propA', 'propB'])

// result will be the following:
{
 propATrigger: NotRelevantType;
 propBTrigger: NotRelevantType;
}

--〉因此myMethod返回一个对象,该对象包含键数组中传递的所有属性的键值对,后缀为“Trigger”
我的问题是:myMethod的返回类型MyMethodReturnType是什么样子的?

xiozqbni

xiozqbni1#

您可以使用此(操场链接):

function myMethod<T extends ReadonlyArray<string>>(obj: any, properties: T): {
    [prop in T[number] as `${prop}Trigger`]: boolean
} {
   // implementation
   return {} as any
}

const result = myMethod({}, ['propA', 'propB'] as const)
const x = result.propATrigger
const y = result.propBTrigger
const fails = result.propA

使用{ [prop in T[number]]: any }可以创建一个包含数组T的键的对象,使用template literal types可以在这些键的末尾添加Trigger

相关问题