我想编写一个函数,它接受一个名称参数,然后用它来创建返回对象的属性名称:
function myFunction (name: string) {
// ....
return {
[`provide${name}`]: {},
[`consume${name}`]: {}
}
const { provideTest, consumeTest } = myFunction('Test')
我应该如何输入这个函数?
答案 0 :(得分:0)
我会将其输入为 playground :
function myFunction(name: string): {
[x: string]: {};
} {
// ....
return {
[`provide${name}`]: {},
[`consume${name}`]: {},
};
}
const {
provideTest,
consumeTest,
} = myFunction('Test');
遗憾的是,您无法根据 name
的值生成类型。
作为替代方案,您可以要求用户提供密钥,因此返回的数据将是强类型的:playground。
在我看来,第一种方式更好。
function myFunction<T extends string = string>(name: string): {
[x in T]: {};
} {
// ....
return {
[`provide${name}`]: {},
[`consume${name}`]: {},
} as {
[x in T]: {};
};
}
const {
provideTest,
consumeTest,
} = myFunction<'provideTest' | 'consumeTest'>('Test');