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

时间:2017-09-05 22:47:09

标签: javascript angular typescript interface decorator

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

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; 
}

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

1 个答案:

答案 0 :(得分:0)

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

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

这实际上几乎涵盖了需求,EventEmitter可靠地看起来应该发出一个事件,并且在fooInstance中指示类具有这样的属性。 应该如何使用然后才会出现在评论领域。