function foo ($a): mixed
{
if ($a == 1)
return true;
else
return 'foo';
}
var_dump(foo(1));
由于mixed
不是实型,因此导致:
致命错误:未被捕获的TypeError:foo()的返回值必须是混合实例。
有没有一种方法可以键入提示的mixed
返回值,或者您是否根本没有在这种情况下声明类型提示?
那里有类型提示来对传递或返回的值施加一些限制。由于“混合”将完全允许任何值,因此将其用作类型提示将毫无意义,因此只需将其忽略即可。
已经有人提议在语言中添加“联合类型”,这将允许您在示例中将返回类型声明为bool|string
,但尚未接受任何声明。
您可以做的是在文档块中记录函数的返回值。IDE和文档生成器通常会理解语法@return bool|string
,然后您可以添加关于返回类型为何变化以及何时期望哪种类型的描述。
当然,值得考虑的一个选项是重新考虑您的设计,并提出一个可以传达其结果而无需针对不同情况返回不同类型的函数。例如,使用异常代替错误的特殊值,或将类似的函数拆分getThing(boolean $asString): float|string
为两个函数getThingAsFloat(): float
和getThingAsString(): string
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句