TypeScript - ReSharper显示通用继承的错误,但项目构建正常

时间:2015-11-11 11:51:35

标签: visual-studio generics typescript resharper

升级到ReSharper 10后,会显示以下错误,但不会出现任何错误。

  

Class'BaseTourModule'不能扩展类'BaseModule':类型'BaseModule'和'BaseTourModule'的属性'settings'的类型是不兼容的   类型参数'TSetup'约束与'TSetup'无关   类型参数'TSetup'与'BaseTourModuleSetup'不兼容,后者不是类型参数

BaseModule定义为

export abstract class BaseModule<TSetup extends BaseModuleSetup> {
    protected settings: TSetup;
}

BaseModuleSetup

export abstract class BaseModuleSetup {
    protected translations: { [index: string]: string; } = {};
    abstract isValid(): boolean;
}

BaseTourModule(抛出错误的地方)的具体实现是:

export abstract class BaseTourModule<TSetup extends BaseTourModuleSetup> extends BaseModule<TSetup> {

}

最后但并非最不重要的是,这是BaseTourModuleSetup

的实施
export abstract class BaseTourModuleSetup extends BaseModuleSetup {
}

我正在使用Visual Studio 2015 Professsional,该项目正在使用ECMAScript 5构建TypeScript 1.6。这是ReSharper的错误还是我看不到有什么问题?

2 个答案:

答案 0 :(得分:4)

That's a bug in ReSharper 10.0. Is already fixed for bugfix update 10.0.1, which will be released relatively soon.

答案 1 :(得分:0)

看起来你在继承中使用了强制转换,根据我的理解,它应该是这样的:

export abstract class BaseModuleSetup {
    protected translations: { [index: string]: string; } = {};
    abstract isValid(): boolean;
}

export abstract class BaseModule extends BaseModuleSetup {
    protected settings: TSetup;
}

export abstract class BaseTourModuleSetup extends BaseModuleSetup {
}

export abstract class BaseTourModule extends BaseTourModuleSetup {
}

无论如何,(在不知道你想要实现什么的情况下),看起来你已经过度使用类层次结构复杂化了。

如果您愿意,您可以解释您的目标是什么,我们可以根据您的需求构建最佳的图表。