在同一个.ts文件中我有
import { Observable } from 'rxjs/Rx';
export interface Loader<T> {
(q: string) : Observable<T[]>;
}
稍后在同一个文件中,我在另一个班级
if (this.field instanceof Loader)
,它给出了以下编译错误
找不到名字'Loader'。
我确认这不是拼写错误。
知道为什么吗?
答案 0 :(得分:1)
您无法在界面上使用instanceof
接口没有编译为js,instanceof
是在运行时发生的事情。
您需要使用type guard,但在您的情况下,它不会轻松,因为Loader
似乎是一个功能...
但你可以这样做:
function isLoader(obj: any): obj is Loader {
return obj && typeof obj === "function";
}
问题是这个类型后卫对于你传递给它的每个函数都是正确的,而不仅仅是Loader
。