Optional Chaining không dẫn đến undefined trong Typescript
Nếu tôi có một mảng các mảng, thì không an toàn khi làm một cách mù quáng
const a=array[index1][index2] vì array[index1] có thể là undefined, dẫn đến lỗi. Những gì tôi mong đợi xảy ra khi tôi bảo vệ với const a=array[index1]?.[index2] là a sẽ là một kiểu hợp nhất với undefined. Tuy nhiên, đó không phải là những gì tôi nhận được - tôi thấy nó như kiểu của mảng cơ sở.
Làm thế nào để tôi bảo vệ trong mã sao cho TS có thể phát hiện khả năng undefined tại thời điểm biên dịch?
MCVE :
type A = {
owner?: string,
feline?: string
}
const arr: Array<Array<A>> = []
const item = arr[2]?.[5]; // typed as A rather than A|undefined
Câu trả lời #1
trong tùy chọn tsConfig của bạn, thêm dòng này
{
"compilerOptions":{
//... something else
"noUncheckedIndexedAccess": true
}
}
https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/#checked-indexed-accesses-nouncheckedindexedaccess
https://www.typescriptlang.org/tsconfig#noUncheckedIndexedAccess
sân chơi

