Valinnainen ketjutus ei aiheuta undefined-arvoa Typescriptissä
Jos minulla on taulukko taulukoita, niin ei ole turvallista tehdä sokeasti
const a=array[index1][index2], koska array[index1] voisi olla undefined, mikä johtaisi virheeseen. Se, mitä odotin tapahtuvan kun puolustin sitä käyttämällä const a=array[index1]?.[index2], oli että a olisi union-tyyppi undefined:n kanssa. Näin ei kuitenkaan tapahdu - näen sen perustaulukon tyypin mukaisena.
Kuinka voin suojautua koodissa siten, että TS voi havaita mahdollisuuden undefined:iin käännösaikana?
MCVE :
type A = {
owner?: string,
feline?: string
}
const arr: Array<Array<A>> = []
const item = arr[2]?.[5]; // typed as A rather than A|undefined
Vastaus #1
lisää tämä rivi tsConfig-vaihtoehtoon
{
"compilerOptions":{
//... something else
"noUncheckedIndexedAccess": true
}
}
https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/#checked-indexed-accesses-nouncheckedindexedaccess
https://www.typescriptlang.org/tsconfig#noUncheckedIndexedAccess
leikkikenttä

