Typescript: funktion returnerer objekttype med felt fra parameter
Jeg har brug for at definere resultatet af funktionen som et objekt med feltnavne fra parametrene. Noget i stil med dette:
function generate<R>(name: string, value: () => R): { [name]: R } {
return {
[name]: value()
};
}
const s = generate('foo', () => 1);
assert(s.foo === 1);
Er det muligt?
Svar #1
Du kan opnå det med lidt hjælp fra overbelastninger:
function generate<T extends string, R>(name: T, value: () => R): Record<T, R>
function generate<T extends string, R>(name: T, value: () => R) {
return {
[name]: value()
}
}
const s = generate('foo', () => 1); // ecord<"foo", number>
Legeplads link
