gpt4 book ai didi

typescript 转换中缺少预期的属性(property)

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

在此playground example我正在尝试将对象文字转换为具有属性的对象。这没有按预期工作。

class X {
y: string;
get hi(): string {
return `hi ${this.y}`;
}
}

const a = new X();
a.y = 'bob';

const b = { y: 'ham' } as X;
const c = Object.assign(new X(), b);
document.write(a.hi); // ouputs "hi bob"
document.write("<br>");

document.write((b.hi === undefined).toString()); // outputs "true"
document.write("<br>");

Object.assign(b, X.prototype);
document.write((b.hi !== undefined).toString()); // outputs "true"
document.write("<br>");
document.write(b.hi); // **outputs "hi defined" -- want "hi ham"**
document.write("<br>");

document.write(c.hi); // outputs "hi ham"
document.write("<br>");

我在类型转换中是否遗漏了一些东西来完成这项工作,或者我应该只是 Object.assign 就像我正在做的 const c = Object.assign(new X(), { y: '火腿' });?

最佳答案

should I just Object.assign like I'm doing with the const c = Object.assign(new X(), { y: 'ham' });

是的。

理想情况下你会在构造函数中使用它:

class X {
constructor(public y: string){}
get hi(): string {
console.log(this);
return `hi ${this.y}`;
}
}

Object.assign 和类实例混合不好。仅将其用于 object literals

关于 typescript 转换中缺少预期的属性(property),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54580608/

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