gpt4 book ai didi

typescript - 在运行时比较两个接口(interface)

转载 作者:搜寻专家 更新时间:2023-10-30 21:33:14 26 4
gpt4 key购买 nike

我想在运行时检查两个接口(interface)是否相等,然后执行一些代码。我注意到一个库条件类型检查可以比较类型并返回 true 或 false 类型,但我不确定如何在我的案例中使用它。

这是我目前所拥有的 type IDialogUnchanged = IsExact<IDialog, IDialogOrig>;

返回 true 或 false 类型

最佳答案

简短:你不能。但如果您可以更改您的要求,它们是可以为您提供类似结果的 hacks/workarounds/ways。

长:接口(interface)在运行时不存在,因此您无法提取有关其成员的数据和/或比较它们。接口(interface)是设计时工具,对你来说,用于自动完成等。它们在运行时消失。但是,几乎没有其他选择。

  1. 您可以发出类型信息,然后在运行时检索它。我不知道有什么方法可以在运行时获取完整的类型信息(比如 Java 或 C# 反射,但也许一些工具已经存在)。用this package (reflect-metadata)您可以发出构造函数参数类型,然后使用它们。
  2. 如果您有对象作为特定接口(interface)/类的实例,您始终可以使用 Object.keys(obj) 逐个比较它们 - 它返回给定类型的字段名称数组(doesn '使用接口(interface),正如我提到的,在运行时不存在)。
  3. 另外,instanceof operator 可能是您需要的东西。如果对象是给定类的实例,它将返回 true。如果您要对要比较的两种类型(比如 A 和 B)执行检查 (obj instanceof A && obj instanceof B),其中 B extends A 并且 obj 属于 B 类型,您将作为此语句的结果得到 true。

希望你能一路走好。如果没有,请提供更多详细信息或提供该图书馆的名称。问候。

关于typescript - 在运行时比较两个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56258641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com