升级打字稿版本:继承问题:类型<y>中的属性<x>无法分配给基本类型中的同一属性

时间:2019-09-03 02:30:23

标签: typescript

我正在开发一个大型应用程序,该应用程序具有基于多个抽象基类的模型。所有这些都适用于我们以前的Typescript版本(2.3),但是它已经很旧了,我想升级到v3.5。

已经编译了一段时间的代码现在引发错误。从我的情况来看,我已将其还原为最小程度,但是有许多位置会导致相同的问题。

我不清楚在不重新配置整个模型的情况下解决此问题的最佳/最简单/影响最小的方法。

class B{
    prop:string;

     doStuff<T extends B>(p:T) : void{
        this.prop = p.prop;
    }
}

class C extends B {
    prep : string;

    doStuff(p : C):void{
        this.prep = p.prep
        super.doStuff(p);
    }
}

错误如下:

tstest.ts(16,5): error TS2416: Property 'doStuff' in type 'C' is not assignable to the same property in base type 'B'.
  Type '(p: C) => void' is not assignable to type '<T extends B>(p: T) => void'.
    Types of parameters 'p' and 'p' are incompatible.
      Type 'T' is not assignable to type 'C'.
        Type 'B' is not assignable to type 'C'.
          Property 'prep' is missing in type 'B'.
tstest.ts(18,23): error TS2345: Argument of type 'C' is not assignable to parameter of type 'B'.
  Types of property 'doStuff' are incompatible.
    Type '(p: C) => void' is not assignable to type '<T extends B>(p: T) => void'.

0 个答案:

没有答案