TypeScript接口/泛型实例化疑问:为何EventEmitter可被实例化?
关于Angular中EventEmitter实例化的疑问解答
你提到的误解核心在于:Angular的EventEmitter不是接口,而是一个可实例化的类。
从@angular/core导入的EventEmitter本质上是继承自RxJS Observable的类,专门设计用于Angular组件间通过@Output装饰器传递自定义事件,完全符合类的实例化规则,所以可以用new EventEmitter<string>()创建实例。
另外注意你提供的完整代码里有一处语法错误:
@Output() sharedData: EventEmitter<string> = new EventEmitter<string>;
这里末尾缺少了括号,正确写法应该是:
@Output() sharedData: EventEmitter<string> = new EventEmitter<string>();
如果不加括号,你实际上是把EventEmitter类本身赋值给了sharedData变量,而不是创建它的实例,后续调用emit方法时会抛出错误。
补充说明:<string>是泛型参数,用来约束这个EventEmitter可以传递的数据类型,确保类型安全,避免传递不符合预期的数据。
内容的提问来源于stack exchange,提问作者Saad
相关产品推荐
相关产品推荐

