示例:
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;作为函数的参数?
答案 0 :(得分:2)
你错过了参数类型的Class<.>
包装器(useIt(TheClass: IClass)
应该是useIt(TheClass: Class<IClass>)
)。那个,接口不会假设一个默认的构造函数,所以你需要在IClass上使用一个显式的(返回类型为void
)。