簡體   English   中英

打字稿:在嚴格模式下可能存在未定義訪問的警告

[英]Typescript: warning for possible undefined access in strict mode

我使用的是打字稿"strict": truetsconfig.json 不幸的是,如果我這樣做,我不會收到警告:

let x: any = { test: false }
let y = x.asdf   // this is undefined, but I don't get a warning

這段代碼實際上仍然可以,但是這崩潰了:

let x: any = { test: false }
let y = x.asdf.jjj   // TypeError: Cannot read property 'jjj' of undefined

如果屬性未定義,是否有可能顯示警告? 我想被警告,以便我可以首先檢查該屬性是否存在。

順便說一下,該配置有效,因為

let x = notDeclared 

顯示, notDeclared

我是否需要短絨呢?

更新

根據所有評論(感謝),我必須更加具體。 上面的代碼只是一個示例,但是在這些情況下,我確實遇到了這個問題,我對x -object中的內容一無所知。 例如:

let x = JSON.parse(...)    // the result is any

然后我不能說,解析對象中包含什么。 我可以訪問任何內容,而x.asdf只是undefinedx.asdf.jjj將使整個應用程序崩潰。 如果是短毛絨或某物,那會很好。 如果我太愚蠢而看不到這個問題,這樣會警告我;)

不幸的是,如果我這樣做,我不會收到警告

因為您使用了any類型注釋。 any本質上都會切換許多編譯時間檢查,並且是開發人員告訴我我更了解 TypeScript編譯器的方式...請不要為我檢查

固定

刪除any注釋:

let x = { test: false }
let y = x.asdf   // ERROR

或使用正確的注釋:

let x:{ test: boolean } = { test: false }
let y = x.asdf   // ERROR

回答更新

我真的對x對象中的內容一無所知

TypeScript也沒有。 TypeScript只能真正防止編譯時類型錯誤。 您需要能夠預先定義類型,以便TypeScript對其進行檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM