我想将接口作为值传递给配置对象:
export interface RouterConfig {
startEvents?: typeof RouterEvent[];
completeEvents?: typeof RouterEvent[];
}
用法应为:
private config: RouterConfig = {
startEvents: [NavigationStart],
completeEvents: [NavigationEnd, NavigationCancel, NavigationError]
};
但是它抛出一个错误:
属性'completeEvents'的类型不兼容。类型'((typeof NavigationEnd | typeof NavigationCancel | typeof NavigationError)[]'不可分配给类型'RouterEvent []'。输入'typeof NavigationEnd | NavigationCancel的类型|无法将typeof NavigationError”分配给“ RouterEvent”类型。类型“ typeof NavigationEnd”不可分配给类型“ RouterEvent”。 “ typeof NavigationEnd”类型缺少属性“ id”。
我该如何解决?
请注意,RouterEvent是一类
答案 0 :(得分:3)
所有NavigationEnd
,NavigationCancel
,NavigationError
类都具有带参数的构造函数。类型RouterEvent
的构造函数不带参数。这就是分配失败的原因。如果您想使用带有任意数量参数的构造函数,则需要使用反映这一点的构造函数签名,例如,这可以工作new (...args: any[]) => RouterEvent
Angular已经以{{的形式)定义了该构造函数的类型别名。 1}}类型。所以我们可以这样写:
Type