对象的混入
分别定义三个对象,然后用Object提供的assign方法合并三个对象为一个对象
这个对象类型就会推断为三个对象的交叉类型
interface Name {
name:string
}
interface Age {
age:number
}
interface Sex {
sex:number
}
let a:Name = {
name:'xm'
}
let b:Age = {
age:20
}
let c:Sex = {
sex:1
}
let obj = Object.assign(a,b,c)
console.log(obj)
此时obj类型为abc的交叉类型
类的混入
class A {
type:boolean
changeType():void {
this.type = !this.type
}
}
class B {
name:string
getName():string {
return this.name
}
}
class C implements A,B {
type:boolean = false
name:string = 'xm'
changeType:() => void
getName:() => string
}
function mixins(curClass:any, itemClass:any[]){
itemClass.forEach(item => {
Object.getOwnPropertyNames(item.prototype).forEach(name => {
curClass.prototype[name] = item.prototype[name]
})
})
}
mixins(C, [A,B])
let ccc = new C()
此时就将AB上的方法混入到了C上