这个问题是与 TypeScript 的类类型检查的直接类比
我需要在运行时找出 any 类型的变量是否实现了接口。这是我的代码:
interface A{
member:string;
}
var a:any={member:"foobar"};
if(a instanceof A) alert(a.member);
如果您在typescript操场中输入此代码,最后一行将被标记为错误,“名称 A 在当前范围内不存在”。但事实并非如此,该名称确实存在于当前作用域中。我什至可以将变量声明更改为var a:A={member:"foobar"};
没有编辑器的抱怨。在浏览网页并在 SO 上找到另一个问题后,我将接口更改为类,但随后我无法使用对象文字来创建实例。
我想知道类型 A 是如何消失的,但查看生成的 javascript 可以解释这个问题:
var a = {
member: "foobar"
};
if(a instanceof A) {
alert(a.member);
}
没有将 A 表示为接口,因此不可能进行运行时类型检查。
我知道 javascript 作为一种动态语言没有接口的概念。有没有办法对接口进行类型检查?
typescript游乐场的自动完成显示typescript甚至提供了一个方法implements
。我怎样才能使用它?