class BaseRouter {
protected $decoratedRoutes[];
}
@SomeDecorator
class APIRouter extends BaseRouter {}
function SomeDecorator <ExtendedRouter extends BaseRouter>(extendingClass: ExtendedRouter) {}
error TS2345:
src/Server/Routes/Api/V1/System/index.ts(7,2): error TS2345: Argument of type 'typeof APIRouter' is not assignable to parameter of type 'BaseRouter'.
Property '$decoratedRoutes' is missing in type 'typeof ApiRouter'.
我在<ExtendedRouter extends BaseRouter>
中创建的界面只是浏览一些示例的猜测。如何正确地允许在装饰器内传递BaseRouter
的任何类?代码当然工作正常,因为在我的express.js应用程序中切换到装饰器模式,我只有70多个错误。
答案 0 :(得分:0)
因为这些类是多态的,所以你可以指定BaseRouter
和子类(以及从它们派生的类)都可以接受......
class BaseRouter {
protected example: string;
}
@SomeDecorator
class APIRouter extends BaseRouter { }
@SomeDecorator
class AnotherRouter extends APIRouter { }
function SomeDecorator<BaseRouter>(extendingClass: BaseRouter) {
}
答案 1 :(得分:0)
class BaseRouter {
protected $decoratedRoutes[];
}
@SomeDecorator
class APIRouter extends BaseRouter {}
function SomeDecorator <ExtendedRouter extends BaseRouter<any>>(extendingClass: ExtendedRouter) {}