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

Relaterede artikler