// 对象混入
// let nameObj = {name: "王楚然"};
// let ageObj = {age: 18};
// // 需求:想让nameObj也拥有 age这个属性
// Object.assign(nameObj, ageObj);
// console.log(nameObj);
// console.log(ageObj);
// 类混入
class Name {
name: string = "毛晓彤";
getName():void {
console.log("我是毛晓彤");
}
}
class Age {
age: number = 18;
getAge():void {
console.log("我今年18岁了");
}
}
// class Person extends Name, Age {}
class Person implements Name, Age {
name: string;
age: number;
getAge: () => void;
getName: () => void;
}
function Mixins(target: any, from: any[]) {
from.forEach(item => {
Object.getOwnPropertyNames(item.prototype).forEach(name => {
target.prototype[name] = item.prototype[name]
})
})
}
Mixins(Person, [Name, Age])
let p = new Person()
p.getAge()
p.getName()