[英]Typescript: warning for possible undefined access in strict mode
我使用的是打字稿"strict": true
的tsconfig.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
只是undefined
, x.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.