为什么returnObject
导致编译TypeError returnObject2
是不是?Typescript功能奇怪的空白|| &&行为
通常,void || something
应返回something
,而void && something
应返回void
。
但是在打字稿中,情况恰恰相反。
var returnVoid = function(){};
var returnObject = function(){ //Typescript compilation TypeError.
//No best common type exists among return expressions.
if(Math.random() < 0.5)
return new Error();
return returnVoid() || null; //always return null
}
var returnObject2 = function(){ //works
if(Math.random() < 0.5)
return new Error();
return returnVoid() && null; //always return undefined
}
注意:类型错误发生在编译期间,而不是在运行时。
编辑:我做了另一个测试。 returnNum2
应该不是() => number
考虑(undefined || something) === something
?注意:void 0
的行为相同。
var returnNum = function(){ //() => number
return undefined || 0;
}
var returnVoid = function(){};
var returnNum2 = function(){ //() => void | number
return returnVoid() || 0;
}
'空== void'! –
不确定你的意思......'undefined'和'void'是''''和'&&'操作中的“false”值。 – RainingChain
我不明白如何发布的代码演示任何东西。这些功能如何被调用?第一个将返回一个错误或null,而第二个返回错误或未定义。 – Pointy