如何定义一个在流中实现接口的Class的函数?

时间:2017-06-13 15:52:30

标签: javascript flowtype

示例:

interface IClass {
  test(arg: String): Promise<*>
}

class MyClass implements IClass {
  async test(arg) { await dosomething(arg) }
}

async function useIt(TheClass: IClass) {
  const obj = new TheClass()
  obj.test('arg')
}

然而,这导致:

const obj = new TheClass()
            ^^^^^^^^^^^^ constructor call. Constructor cannot be called on
const obj = new TheClass()
                ^^^^^^^^ IClass

我理解,因为IClass是接口,但是如何指定一个&#34;类&#34;实现特定的&#34;接口&#34;作为函数的参数?

1 个答案:

答案 0 :(得分:2)

你错过了参数类型的Class<.>包装器(useIt(TheClass: IClass)应该是useIt(TheClass: Class<IClass>))。那个,接口不会假设一个默认的构造函数,所以你需要在IClass上使用一个显式的(返回类型为void)。