簡體   English   中英

為什么此lambda函數不是打字稿中的錯誤?

[英]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.

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