Typescript 2.8.3:没有共同属性的联盟类型

时间:2018-05-18 10:15:01

标签: javascript typescript

以下在Typescript 2.3.5上运行良好但在2.8.3上不再有效。

class A {
       variableA: string;
   }
   class B {
       variableB: number;
   }
   class C {
       variableC: boolean;
   }
   type TYPES = A | B | C;

   function doStuff(types: TYPES) {
       switch (types) {
       case A: // error
           break;
       case B: // error
           break;
       case C: // error
           break;
       }
   }
   doStuff(A); // error
  

[TS]   类型A'的类型论证不能分配给' TYPES'类型的参数。     输入A'类型不能分配给' C'。       属性'变量C' A'类型'类型中缺少。

如何更改此结构以使其再次有效?

1 个答案:

答案 0 :(得分:1)

/** IE9, IE10 and IE11 requires all of the following polyfills. **/ import 'core-js/es6/symbol'; import 'core-js/es6/object'; import 'core-js/es6/function'; import 'core-js/es6/parse-int'; import 'core-js/es6/parse-float'; import 'core-js/es6/number'; import 'core-js/es6/math'; import 'core-js/es6/string'; import 'core-js/es6/date'; import 'core-js/es6/array'; import 'core-js/es6/regexp'; import 'core-js/es6/map'; import 'core-js/es6/weak-map'; import 'core-js/es6/set'; 类型指定A / B / C类的实例,而A类型是A / B / C类本身。

应该是:

types