Я думаю, что компилятор не распознает ваше значение {a: 1}
как тип { [key: string]: any }
, потому что если вы измените строку таким образом, ошибки компилятора не будет:
function makeMgeInfo(bid: string): PM_MGEInfo {
return <PM_MGEInfo>{
bid,
labs: {a: 1} as {[key: string]: any}
};
}
также работает, если вы определяете переменную следующим образом:
mylabs: {[key: string]: any} = {a: 1};
и вызовите его в своей функции:
makeMgeInfo(bid: string): PM_MGEInfo {
return <PM_MGEInfo>{
bid,
labs: this.mylabs
};
}
Поэтому я бы сказал, что компилятор не распознает ваш определенный тип из поля labs. Сообщение об ошибке в этом случае очень вводит в заблуждение.