如果返回值混合使用什么类型的提示?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果返回值混合使用什么类型的提示?相关的知识,希望对你有一定的参考价值。

function foo ($a): mixed
{
    if ($a == 1)    
        return true;
    else
        return 'foo';
}

var_dump(foo(1));

由于mixed不是真正的类型,因此结果为:

致命错误:未捕获的TypeError:foo()的返回值必须是混合的实例...

有没有办法输入提示mixed返回值,或者你只是不在这种情况下声明类型提示?

答案

类型提示是对传递或返回的值强制执行某些限制。由于“mixed”将允许任何值,因此将其用作类型提示将毫无意义,因此请省略它。

有人建议在语言中添加“联合类型”,这样就可以在示例中将返回类型声明为bool|string,但尚未接受任何类型。

您可以做的是在docblock中记录函数的返回值。 IDE和文档生成器通常会理解语法@return bool|string,然后您可以添加返回类型变化的原因以及何时预期哪种类型。

当然,一个值得考虑的选择是重新考虑你的设计,并提出一个功能,它可以传达其结果,而不会为不同的情况返回不同的类型。例如,使用异常而不是特殊值来表示错误,或者将像getThing(boolean $asString): float|string这样的函数分成两个函数getThingAsFloat(): floatgetThingAsString(): string

以上是关于如果返回值混合使用什么类型的提示?的主要内容,如果未能解决你的问题,请参考以下文章

汇编中用啥命令代码来获取函数的返回值?

金属着色器混合片段接收错误的颜色值

java基础3-重载+命令行传参+递归+数组+排序

if - else 语句

PHP中的类型提示返回值/函数

如何解决“文件上传返回JSON数据,在IE下提示下