【发布时间】:2016-04-05 22:02:51
【问题描述】:
我正在尝试创建一个使用许多其他可能类的组件构建的动态类。
我正在尝试使用 ES6 Object.assign() 添加和删除它们,并且可以获取要复制的变量,但似乎无法获取要复制的方法。
这是我正在尝试做的一个示例:
class foo {
salad: string = 'salad';
chop(){
console.log('Chop');
}
}
class man {
nuts: string = 'nuts';
kick(){
console.log('Kick')
}
}
class choo {
add(){
var f: foo = new foo();
var m: man = new man();
//Copy variables
Object.assign(this, f, m);
//Copy methods
//Object.assign(this.prototype, f, m);
}
remove(){
d = Object.getPrototypeOf(foo);
for (key in d){
delete this[key]
}
}
}
var karate = new choo();
karate.add();
//karate.chop();
console.log(karate.salad);
//karate.kick();
console.log(karate.nuts);
我试图在http://fiddlesalad.com/typescript/ 上分享一个示例,但它无法保存。不工作的代码被注释掉了。
Object.assign(this.prototype, obj1) 是 ES6 推荐的,用于将原型函数从一个类复制到另一个类,但 TypeScript 似乎不喜欢它。
有什么想法吗?
【问题讨论】:
-
从表面上看,您正在尝试进行多重继承。我会先调查一下。注意:我不建议动态多继承,因为 Typescript 不会理解它。我还建议您查看生成的实际 js,看看为什么
Object.assign不起作用。
标签: javascript typescript ecmascript-6