TypeScript学习日志-第二十二天(Mixins混入)

本文介绍了如何在JavaScript中使用混合(Mixins)技术,包括对象的浅拷贝合并、类的插件式混入,以及通过`Object.assign`和自定义插件函数实现类的继承。实例展示了如何在`App`类中混入`Logger`和`Html`功能。
摘要由CSDN通过智能技术生成

Mixins混入

一、对象混入 合并

当我们有两个或多个对象的时候,如何将这两个对象合并,如图:

interface A {
    name:string
}
interface B {
    age:number
}
let a:A = {
    name:'小明'
}
let b:B = {
    age:10
}
// 1.扩展运算符 浅拷贝 返回新的类型
let c = {...a,...b}
// 2.ES6 Object.assign 浅拷贝 交叉类型
let c2 = Object.assign({},a,b)

二、类的混入

// 插件类型的混入
class Logger {
    log(msg:string){
        console.log(msg)
    }
}

class Html {
    render(){
        console.log('render')
    }
}

class App {
    run(){
        console.log('run')
    }
}
type Custructor<T> = new (...args:any[]) => T
function pluginMinxins <T extends Custructor<App>>(Base:T){
    return class extends Base {
        private Logger = new Logger()
        private Html = new Html()
        constructor(...args:any[]){
            super(...args)
            this.Logger = new Logger()
            this.Html = new Html()
        }
        run () {
            this.Logger.log('run')
        }
        render(){
            this.Logger.log('run')
            this.Html.render()
        }
    }
}

const mixins = pluginMinxins(App)
const app = new mixins()
app.run()
app.render()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值