Typescript 对象相等比较类型脚本。无法将对象属性应用于泛型类型
为了更好地理解Javascript中的对象比较,以及typescript的属性访问,我试图从这个起点为我的类创建一个平等的比较器 我知道这可以通过stringify和loadash来实现,但我发现挖掘对象属性以应用逻辑很有趣 这是比较两个对象的代码(来自上面的链接): 因此,在声明Typescript 对象相等比较类型脚本。无法将对象属性应用于泛型类型,typescript,generics,equals,Typescript,Generics,Equals,为了更好地理解Javascript中的对象比较,以及typescript的属性访问,我试图从这个起点为我的类创建一个平等的比较器 我知道这可以通过stringify和loadash来实现,但我发现挖掘对象属性以应用逻辑很有趣 这是比较两个对象的代码(来自上面的链接): 因此,在声明private equals(x:T,y:T):boolean{中,我可以修复编译错误 但如果是这样,这里的论点就不合适了: if (!this.equals(x[p], y[p])) { r
private equals(x:T,y:T):boolean{
中,我可以修复编译错误
但如果是这样,这里的论点就不合适了:
if (!this.equals(x[p], y[p])) {
return false;
}
由于p的类型为常量p:Extract
(通过typescript intellisense onHover)
如果我用我的类类型替换泛型(它是Vec3
类,但是不相关),尽管它有一个构造函数,我仍然会出现错误:
类型“Vec3.ts(2339)”上不存在属性“hasOwnProperty”
类型“Vec3.ts”(2339)上不存在属性“constructor”
如果我应用接口以避免对象属性错误,我将获得以下错误:
要使其正常工作,请尝试下一个代码:
类型索引={
[索引:字符串]:未知
}
常数等于=(x:T,y:T)=>{
//…您的代码
}
你只需要确定你的论点实际上是对象
请看一看
更新
尝试:
类型索引={
[索引:字符串]:已索引
}
我觉得有点脏,但如果你能告诉我你想要实现什么,也许我会提供更好的解决方案,让它发挥作用,试试下面的代码:
类型索引={
[索引:字符串]:未知
}
常数等于=(x:T,y:T)=>{
//…您的代码
}
你只需要确定你的论点实际上是对象
请看一看
更新
尝试:
类型索引={
[索引:字符串]:已索引
}
我有点脏,但是如果你能解释一下你想要实现什么,也许我会提供更好的解决方案如果泛型扩展了类型,那么我会在代码的另一部分得到一个错误,因为参数类型不适合(equals似乎是递归调用的,属性在方法中作为字符串传递)。有人解释过,但我添加了一个屏幕截图来澄清。很多感谢,就像我所理解的,T类型可以是任何值?我的意思是:数组、字符串、数字、函数等…?所以x和y是具有3个属性的对象?所以你根本不需要使用泛型T。让我们来看看。如果泛型扩展了类型,那么我在代码的另一部分会得到一个错误,因为argumnts类型Not fit(equals似乎是递归调用的,属性在方法中作为字符串传递)有人解释过,但我添加了一个屏幕截图来澄清。很多感谢就像我理解的一样,T类型可以是任何值?我的意思是:数组、字符串、数字、函数等等?所以x和y是具有3个属性的对象?所以你根本不需要使用泛型T。让我们来看看。
interface ObjectPropertiesHandlable {
constructor: void;
hasOwnProperty: void;
}
if (!this.equals(x[p], y[p])) {
return false;
}