我有以下代码。由于某些原因,Flow拒绝了它。

class A {}
class B {}

type Intersection = (A | B);

var myMap: {
    a: A;
    b: B;
} = {
    a: new A(),
    b: new B()
}

var getter = function (name: string): () => Intersection {
    return function (): Intersection {
        return myMap[name];
    }
}

var bGetter: () => B = getter("b");


我看不到代码中的错误。但是,Flow拒绝使用以下内容:


  /srv/webwallet/app/scripts/angularHelper.js:14:22,22:A此类型是
  与/srv/webwallet/app/scripts/angularHelper.js:12:7,7不兼容:
  乙
  
  找到1个错误


为什么不检查代码,以及如何检查代码?

最佳答案

你需要改变

type Intersection = (A | B);



type Intersection = (A & B);

“ |”运算符是不相交的联合。

10-06 06:11