升级到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
的错误还是我看不到有什么问题?
答案 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 {
}
无论如何,(在不知道你想要实现什么的情况下),看起来你已经过度使用类层次结构复杂化了。
如果您愿意,您可以解释您的目标是什么,我们可以根据您的需求构建最佳的图表。