0
這是另一個typescript 2.0問題(啓用嚴格的空檢查模式)。所以,如果你定義一個具有缺省值的所有參數的函數:
(name = "Luis", age = 40)=>void
那麼所有參數都認爲是可選的,也就是說,這是因爲如果我們有以下特徵:
(name?: string, age?: number) => void
,對嗎?現在,當我們把這個簽名會發生什麼:
(name = "Luis", age: number) => void
據VS代碼,該簽名是兼容:現在
(name: string, age: string) => void
,如果我激活了嚴格的空檢查模式,應該不是下面的調用產生一個錯誤:
doIt(undefined, 30);
它編譯好的,但如果我沒有錯,不確定只會被自動添加到類型可選參數列表。我還沒有找到任何對默認初始化參數的引用。
所以,如果以前的通話是好的,有人可以指向我可以在官方文檔中找到相關信息的地方嗎?
感謝,
路易斯
提出的一個問題是什麼的'doIt方法()確切的簽名',你認爲應該引起編譯失敗? –
你好丹。 好吧,在我的情況下,doIt會像這個函數doIt(name =「Luis」,年齡:數字){....}。 –
這解釋了爲什麼沒有編譯時錯誤,但我看到@basarat已經解釋了爲什麼:) –