Tìm kiếm trang web

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