You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PHPStan提示泛型接口ListOrderedInterface返回类型未指定类型的问题?

解决PHPStan泛型接口返回类型报错问题

问题原因

你遇到的报错是因为ListOrderedInterface是带泛型的接口,当它作为方法返回类型时,PHPStan要求必须明确指定泛型的具体类型参数,不能只写接口名称。

解决方法

给工厂接口也添加泛型模板声明,让makeList方法的返回类型绑定对应的泛型参数:

1. 保持原有序列表接口不变

/**
 * @template ListOrderedElement
 */
interface ListOrderedInterface
{
    /**
     * @param ListOrderedElement $element
     * @return void
     */
    public function add($element): void;

    // 其他自定义方法
}

2. 修改工厂接口,添加泛型模板

/**
 * @template T
 */
interface ListOrderedFactoryInterface
{
    /**
     * @return ListOrderedInterface<T>
     */
    public function makeList(): ListOrderedInterface;
}

额外说明

  • 如果你的工厂是专门创建某一固定类型的有序列表(比如字符串列表),也可以直接指定具体类型,无需给工厂加泛型:
    interface ListOrderedFactoryInterface
    {
        /**
         * @return ListOrderedInterface<string>
         */
        public function makeList(): ListOrderedInterface;
    }
    
  • 当实现ListOrderedFactoryInterface时,你可以在实现类中明确泛型的具体类型,比如:
    /**
     * @implements ListOrderedFactoryInterface<int>
     */
    class IntListOrderedFactory implements ListOrderedFactoryInterface
    {
        public function makeList(): ListOrderedInterface
        {
            return new IntOrderedList(); // 假设这个类实现了ListOrderedInterface<int>
        }
    }
    

内容的提问来源于stack exchange,提问作者Doug Wilbourne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:55:24