angular - 如何连接 Output() 和 Input() 装饰器?

标签 angular typescript interface decorator

我想为生成 JSON 的组件创建一个接口(interface)。我想强制每个实现组件接受一个类型作为输入并产生一个输出:

import { EventEmitter, Output, Input } from '@angular/core';
import { Foo, FooConfiguration } from '../../interfaces';
interface FooConfigurator {
    @Output() fooWasConfigured: EventEmitter<FooConfiguration>;
    @Input() fooInstance: Foo;
}

然后,实现 FooConfigurator 的组件将确保以下内容:
import { EventEmitter, Output, Input } from '@angular/core';
import { Foo, FooConfiguration, FooConfigurator } from '../../interfaces';
class ConcreteFooConfigurator implements FooConfigurator {
    @Output() fooWasConfigured: EventEmitter<FooConfiguration>;
    @Input() fooInstance: Foo; 
}

此接口(interface)定义失败,因为它是无效的语法。我该怎么做,或者更好地解决问题?

最佳答案

目前不可能将装饰器与 TypeScript 接口(interface)。下一个最好的方法是简单地连接类型并添加关于它的注释。

interface FooConfigurator {
    fooWasConfigured: EventEmitter<FooConfiguration>;
    fooInstance: Foo;
}

这在本质上几乎涵盖了需求,EventEmitter 将可靠地看起来应该发出一个事件,并且在 fooInstance 中指示类具有这样的属性。然而,这些应该如何使用存在于评论领域。

关于angular - 如何连接 Output() 和 Input() 装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46064339/

相关文章:

angular - 如何检测 mat-sidenav-container 中的滚动事件

javascript - 类似于OSGi的Angular(2/4)模块生命周期

c# - 使用 Entity Framework 对接口(interface)进行编码

c# - 如何不在类中实现接口(interface)的功能?

oop - 接口(interface)(替代多重继承)如何实现代码重用

angular - location.reload() 和 location.replace(url) 在 Electron 和 Angular 6 中不起作用

angular - 'L' 引用 UMD 全局 - 编译错误

javascript - 当 props 和 state 没有改变时 React PureComponent 更新

javascript - Angular 2 : How to filter records between two dates?

arrays - 使用 Typescript 创建动态对象来重新组织 API 响应