当前位置: 首页 > 知识库问答 >
问题:

typescript - 关于ts比较两个类型是否相同问题?

陈弘厚
2023-09-27

这样写 判断不了只读属性和不是只读属性 有什么办法吗(这是为什么T_T)

type IsEqual<T, U> = [T] extends [U] ? ([U] extends [T] ? true : false) : falsetype A = IsEqual<{ readonly a: 'A' }, { a: 'A' }> // true 但希望是false

共有1个答案

鲍俊杰
2023-09-27

extends 判断的依据是类型是否是 assignable(能赋值的),而 readonly 并不能影响类型的 assignable 特性。
通过 Google 找到一个能够判别 readonly 的方法,仅供参考:

type IsEqual<A, B> = (<T>() => T extends A ? 1 : 2) extends <T1>() => T1 extends B ? 1 : 2 ? true : false;type A = IsEqual<{ readonly a: "A" }, { a: "A" }>; // false

代码出处:https://github.com/microsoft/TypeScript/issues/27024#issuecomment-510924206
希望对你有所帮助!

 类似资料:
  • 假设我有两个列表,现在listOld包含旧员工信息,listNew包含新员工信息 我如何比较这两个列表并返回新列表,其中包含,添加的新员工列表,包含,删除的员工列表,包含上次更新已更改的员工的新列表? 我只能想到迭代列表和比较,可能最终几乎是O(n2)时间,这可以由任何util类更有效地完成吗?

  • 我做了这个扩展方法来检查一个类型是否实现了一个接口。要使其正常工作,它需要比较两种类型。然而,这种比较似乎并不现实: 这是我比较失败的情况: 正如注释中提到的,如果我比较类型名,那么它总是按照预期工作。我想知道这是怎么回事。

  • 比较两个NumPy数组是否相等的最简单方法是什么(其中相等定义为:A=B iff,用于所有索引i:

  • 两个 NavigableString 或 Tag 对象具有相同的HTML或XML结构时, Beautiful Soup就判断这两个对象相同. 这个例子中, 2个 <b> 标签在 BS 中是相同的, 尽管他们在文档树的不同位置, 但是具有相同的表象: “<b>pizza</b>” markup = "<p>I want <b>pizza</b> and more <b>pizza</b>!</p>"

  • 两个 NavigableString 或 Tag 对象具有相同的HTML或XML结构时, Beautiful Soup就判断这两个对象相同. 这个例子中, 2个 <b> 标签在 BS 中是相同的, 尽管他们在文档树的不同位置, 但是具有相同的表象: “<b>pizza</b>” markup = "<p>I want <b>pizza</b> and more <b>pizza</b>!</p>"

  • 本文向大家介绍JavaScript比较两个数组的内容是否相同(推荐),包括了JavaScript比较两个数组的内容是否相同(推荐)的使用技巧和注意事项,需要的朋友参考一下 今天意外地发现JavaScript是不能用==或===操作符直接比较两个数组是否相等的。 以上两句代码都会弹出false。 因为JavaScript里面Array是对象,==或===操作符只能比较两个对象是否是同一个实例,也就是