TypeScript 中的接口类型检查
在 TypeScript 中,您可能会遇到这样的场景:在运行时确定对象是否符合预定义接口至关重要。虽然利用instanceof关键字进行类类型检查很简单,但将其应用于接口却提出了挑战。
传统方法(例如依赖instanceof运算符)被证明是无效的,因为接口在编译的JavaScript中缺乏作为不同类型的表示。相反,自定义类型保护提供了一个解决方案:
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); }
这种方法允许运行时验证接口合规性,而不需要instanceof关键字。
在必须检查多个成员的情况下,可以引入鉴别器属性。这种方法需要管理自己的鉴别器并确保唯一性以避免冲突:
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); }
通过使用自定义类型防护或鉴别器,您可以在运行时有效地执行接口类型检查,从而增强 TypeScript 应用程序的稳健性。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3