javascript - 在 JavaScript/TypeScript 中动态添加对象属性 "directly"到 `this`

标签 javascript typescript

是否可以在 JavaScript/TypeScript 中将对象的属性“直接”添加到类的 this 中(无需循环遍历对象属性并以这种方式创建它们)?

这样的东西不起作用(据我所知):

const TEST:any = {
    case1: {
        ing: "ing1",
        ping: "ping1"       
    },
    case2: {
        ing: "ing2",
        ping: "ping2"       
    }
}

class Test {

    constructor() {
        if (true) {
            Object.assign(this, TEST.case1);                        
        } else {
            Object.assign(this, TEST.case2);            
        }
    }
}

所以我可以这样使用它:

let test = new Test();
console.log(test.ing); // outputs "ing1"

最佳答案

if(true) 使其始终进入 if,而不是进入 else。您的代码按预期工作。请注意,您不能将变量声明为特定类型,看起来您正在尝试混合 ES6 和 TypeScript。

也许您的意思是以下内容(http://www.es6fiddle.net/ikqxpqh4/):

const TEST/* : any (Type information is TypeScript not ES6) */ = {
    case1: {
        ing: "ing1",
        ping: "ping1"       
    },
    case2: {
        ing: "ing2",
        ping: "ping2"       
    }
}

class Test {

    constructor(test) {
        if (test) {
            Object.assign(this, TEST.case1);                        
        } else {
            Object.assign(this, TEST.case2);            
        }
    }
}
var t1 = new Test(false);
var t2 = new Test(true);
console.log(JSON.stringify(t1), JSON.stringify(t2));
// {"ing":"ing2","ping":"ping2"} {"ing":"ing1","ping":"ping1"}

关于javascript - 在 JavaScript/TypeScript 中动态添加对象属性 "directly"到 `this`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35459187/

相关文章:

javascript - 如何将参数向下传递给 await 函数

javascript - 包装函数的类 : get correct typings and access to number of arguments (in typescript)

javascript - 未捕获的 TypeError : Can't add property 12, 对象不可扩展

javascript返回数组不起作用

javascript - 如何在 Canvas 中绘制虚线矩形?

javascript - 如果值为真,则从循环中移除项目

javascript - 当用户再次单击下拉列表时,如何隐藏当前选定的 li 元素成为一个选项?

html - 使用 [style.something.px] ="2"以 Angular 定义边框宽度(厚度)

reactjs - 使用 Vite 和 React 进行生产构建时出错 : Error in Uncaught TypeError: _ is not a function

javascript - ionic 2 - 将句子字符串转换为单词数组