升级到打字稿3.5后,我看到此错误非常严重。
可以用约束'{}'的其他子类型实例化打字稿错误
我不知道这是什么意思,它总是指空{}
类型。
如果您看第34行的这个游乐场,我不知道可以用不同的子类型实例化什么,甚至子类型可以是什么。
这是由打字稿生成的消息,我认为这{}
是添加到错误消息的默认类型。
这个github问题存在,但我仍在努力理解它
我不理解其余代码的作用,但是眼下的问题归结为:
function map2<A, B>(x: A|undefined, fn: (a: A) => B): B|undefined {
if (x === undefined) {
return x;
} else {
return fn(x);
}
}
这不会检查,因为A
还可以包含undefined
,TS无法决定是返回A
还是undefined
在第一个分支中。
通过告诉TSA
永远不会被定义,可以很容易地解决这个问题:
function map2<A extends {}, B>(x: A|undefined, fn: (a: A) => B): B|undefined {
if (x === undefined) {
return x;
} else {
return fn(x);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句