ค้นหาเว็บไซต์

typescript - ทำไมชนิดของค่าของวัตถุจึงไม่ถูกอ้างอิงเมื่อคีย์ถูกส่งกลับจากฟังก์ชัน?


นี่เป็นพฤติกรรมที่คาดไว้หรือไม่? เมื่อฉันส่งสตริงไปยังออบเจ็กต์ TypeScript จะสันนิษฐานประเภทค่าของมัน แต่เมื่อกุญแจถูกส่งเป็นค่าที่ฟังก์ชันคืนกลับ - มันจะไม่ทำเช่นนั้น

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;

ฉันคาดหวังว่าประเภทค่าจะถูกอนุมานเมื่อคีย์มาจากฟังก์ชัน