typescript - Tyyppivarmistus objekteihin
Miksi objektien ominaisuuksien tyyppiväitteitä ei "levitetä" pidemmälle?
type Message = { text?: string };
function print(input: { text: string }) {
console.log(input.text);
}
const message: Message = { text: 'hi' };
if (typeof message.text === 'string') {
print(message); // does not work
const text = message.text;
print({ text }); // works
}
Odottaisin, että voisin kutsua print(message) sen jälkeen, kun olen varmistanut, että message.text on todella merkkijono, mutta se ei toimi virheen vuoksi Type 'undefined' is not assignable to type 'string'. (2345). Sen sijaan minun täytyy luoda uusi objekti, jonka voin antaa print-funktiolle.
PS: Tiedän, että voisin kirjoittaa tyypin tarkistusfunktion siihen, mutta tuntuu oudolta, että TS ei pysty päättelemään tätä automaattisesti?