TypeScript 中的接口类型检查
在 TypeScript 中,接口定义对象可以遵循的契约,但它们不会在运行时强制执行它们。这意味着使用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); }
这可以进行高效的类型检查,而无需单独检查所有成员。
以上是如何在TypeScript中实现接口的运行时类型检查?的详细内容。更多信息请关注PHP中文网其他相关文章!