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