我正在使用 jQuery 開發一個 Angular 專案,并注意到一個奇怪的例外。查看下面來自 Angular 組件類的 TypeScript 代碼:
let foo :any | undefined = window.innerWidth * 0.26; // first line has no error
let bar :any | undefined = $(window).width() * 0.26; // second line has an error
第二行回傳編譯器錯誤:Object is possibly 'undefined'.ts(2532). 這有點好笑,因為編譯器假設這個最終將由瀏覽器運行的 Web 應用程式可能沒有視窗 - 基于 Angular 的解決方案是否有任何情況,這可能是這種情況?
無論如何,讓我們假設存在這種情況并且編譯器是正確的,當window物件以某種方式未初始化并查看此代碼時;
let asd :number = window.innerWidth * 0.26; // third line also has no error
在這種情況下,可能會出現兩個錯誤(請參閱
所以,我的問題是:為什么 TypeScript 編譯器使用 jQuery 方法(第一行)進行值賦值時顯示錯誤,但使用本機 JS 物件屬性方法(第二行和第三行)沒有編譯器錯誤?
uj5u.com熱心網友回復:
$是第三方功能。此函式的回傳型別在GitHub中指定。
錯誤訊息意味著回傳的值 from$(window)可能是undefined。您可以使用可選鏈接$(window)?.width()。
該錯誤與width.
即使總會有一個window物件,該函式$的回傳型別可能是undefined.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/446480.html
標籤:javascript jQuery 有角度的 打字稿
上一篇:jquery附加的divonclick第一次不起作用
下一篇:Jquery僅在重定向后向下滾動
