[英]Why is this lambda function not an error in typescript?
我想像這段代碼
let x: (a: { b: number }) => void = (a: { b: number, c: string }) => { alert(a.c) };
x({ b: 123 });
應該會產生一個錯誤,因為lambda函數需要在a
參數上附加一個屬性,因此簽名應該不兼容。 但是在最新的打字稿游樂場嘗試此操作不會產生任何錯誤! 這是為什么?
當你說
let x: (a: { b: number }) => void
您說的是“ x是一個帶有b
鍵的對象的函數”。
然后,您為其分配了一個lambda,該lambda帶有一個對象,該對象帶有b
鍵和c
鍵。 這樣可以通過類型檢查器,因為任何傳入的對象都必須具有b
鍵。
然后,使用b
鍵向其傳遞對象。 沒有錯
如果您希望它由於c
鍵而失敗,則將x
的類型設置為以下形式:
let x: (a: { b: number, c: string }) => void
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.