给出:
// @flow
declare interface IFoo {
test();
}
class Foo implements IFoo {
test () {
console.log('in test');
}
}
如果我有一个功能:
// some function
async function demo (argA: string, argB: INSTANCE_OF_Foo) { ... }
我如何告诉流程argB
是“实现IFoo的类的实例”?换句话说,如果函数demo
的用法必须像
const foo: IFoo = new Foo();
demo('bla' foo);
如何确保传递给demo
的是实现IFoo
的类的实例?
答案 0 :(得分:0)
类型脚本接口在运行时会被忽略,它仅在编译时用于类型检查。因此,您无法检查Foo是否用IFoo实现。 但是您可以检查foo是否是Foo类的实例。
答案 1 :(得分:0)
因此,这取决于您要查找的内容:您可以确保该参数实现IFoo
:
async function demo (argA: string, argB: IFoo)
,或者参数是类Foo
的实例:
async function demo (argA: string, argB: Foo)
但是我必须说,还不清楚为什么需要一个实例而不是一个接口(我认为这是解决问题的方法)。
您可以在flow.org/try上轻松地玩这个游戏。
希望这会有所帮助!