首页 > 解决方案 > 静态方法中返回的类实例与类型不匹配

问题描述

我正在以静态方法返回类的实例,但流程抱怨泛型类型不兼容。这是流程的问题还是我做错了什么?

代码:

class Foo<T> {
    var1: T
    constructor(var1: T) {
        this.var1 = var1
    }
    static staticMethod(var1: T) {
        return new Foo(var1)
    }
}

let x:Foo<number> = new Foo(1) // works
let y:Foo<number> = Foo.staticMethod(1) // doesn't work

错误:

let y:Foo<number> = Foo.staticMethod(1)
                    ^ Cannot assign `Foo.staticMethod(...)` to `y` because `T` [1] is incompatible with number [2] in type argument `T` [3].

标签: flowtype

解决方案


似乎 flow 无法在这里推断类型,但如果您注释返回类型,它就可以正常工作。

改变

static staticMethod(var1: T) {

static staticMethod(var1: T): Foo<T> {

推荐阅读