您可以在不使用
instanceof关键字的情况下实现所需的功能,因为现在可以编写自定义类型防护:
interface A{ member:string;}function instanceOfA(object: any): object is A { return 'member' in object;}var a:any={member:"foobar"};if (instanceOfA(a)) { alert(a.member);}很多成员
如果需要检查很多成员以确定对象是否与您的类型匹配,则可以添加一个鉴别符。以下是最基本的示例,要求您管理自己的区分符…您需要更深入地研究模式,以确保避免重复的区分符。
interface A{ discriminator: 'I-AM-A'; member:string;}function instanceOfA(object: any): object is A { return object.discriminator === 'I-AM-A';}var a:any = {discriminator: 'I-AM-A', member:"foobar"};if (instanceOfA(a)) { alert(a.member);}


