Búsqueda de sitios web

typescript - ¿Por qué no se infiere el tipo de valor de un objeto cuando la clave se devuelve desde una función?


¿Es un comportamiento esperado o no? Cuando paso una cadena a un objeto, TypeScript infiere su tipo de valor, pero cuando la clave se pasa como el valor de retorno de una función, no lo hace.

function getB(): 'b' {
    return 'b';
}

type A = {
    b: (arg: string) => void;
};

// Parameter 'arg' implicitly has an 'any' type.

const a = {
    [getB()]: (arg) => {
        console.log(arg);
    },
} as A;

// This is OK

const b = {
    ['b']: (arg) => {
        console.log(arg);
    },
} as A;

// This is also OK

const key = getB();

const c = {
    [key]: (arg) => {
        console.log(arg);
    },
} as A;

Espero que el tipo de valor se infiera cuando la clave provenga de una función