这个问题是Class type check with TypeScript的直接类比
我需要在运行时查明任何类型的变量是否实现了接口.这是我的代码:
interface A{
member:string;
}
var a:any={member:"foobar"};
if(a instanceof A) alert(a.member);
如果您在打字操场中输入此代码,最后一行将被标记为错误,"名称A不存在于当前作用域中".但事实并非如此,该名称确实存在于当前作用域中.我甚至可以将变量声明更改为var a:A={member:"foobar"};
,而不会收到编辑的抱怨.在浏览Web并找到另一个问题之后,我将接口更改为一个类,但是之后我不能使用对象文字来创建实例.
我想知道A型是如何消失的,但看看生成的javascript就可以解释这个问题:
var a = {
member: "foobar"
};
if(a instanceof A) {
alert(a.member);
}
没有接口的表示形式,因此不可能进行运行时类型判断.
我知道javascript作为一种动态语言没有接口的概念.有没有办法对接口进行类型判断?
typescriptplayground 的自动完成功能显示,typescript甚至提供了方法implements
.我怎么用?