我想创建一个界面,强制执行任何人使用@Input()
和@Output()
。
这是我的界面:
export interface BannerInterface {
currentEvents: Input,
_bannerClick: Output
}
我实现它的组件:
@Input()
set currentEvents(currentEvents: any[]) {
this.currentEvent = currentEvents[0];
}
@Output() _bannerClick: EventEmitter<any> = new EventEmitter();
这给我一个错误,我错误地使用了界面。
我理解接口可以强制执行类型而不是装饰器(我构建的接口不能使用这些类型),但我想知道是否有一种方法可以强制属性为@Input()
和{{1} }。
答案 0 :(得分:0)
您可以为每个组件使用抽象类:
export abstract class Component {
@Input()
abstract set currentEvents(currentEvents: any[]);
@Output()
abstract get output();
}
export class FooComponent extends Component{
set currentEvents(currentEvents: any[]) {
//Your implementation.
}
get output() {
//Your implementation.
}
}
我目前还没有工具来测试这个,但这应该可行,因为装饰器遵循继承。无论如何,我没有看到你想要这样做的用例。