• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript-混入

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  • 通过 Object.assign 方法进行混入
let obj1 = {name: 'BNTang'};
let obj2 = {age: 34};

Object.assign(obj1, obj2);

console.log(obj1);
console.log(obj2);

类混入

博主假设有这么一个需求: 定义两个类, 将两个类的内容混入到一个新的类中,你看到该需求会不会第一时间想到通过继承的方式来进行实现,那么这个时候就有一个注意点需要你注意一下了,在 TS 当中一次只能继承一个类,不能进行多继承,所以这个时候就可以利用混入来实现该需求,可以通过,Object.getOwnPropertyNames() 方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组,然后在依次赋值即可如下:

class Dog {
    name: string = 'wc';

    say(): void {
        console.log('wang wang');
    }
}

class Cat {
    age: number = 3;

    run(): void {
        console.log('run run');
    }
}

class Animal implements Dog, Cat {
    name: string;
    age: number;
    say: () => void;
    run: () => void;
}

function myMixin(target: any, from: any[]) {
    from.forEach((fromItem) => {
        Object.getOwnPropertyNames(fromItem.prototype).forEach((name) => {
            target.prototype[name] = fromItem.prototype[name];
        })
    })
}

myMixin(Animal, [Dog, Cat]);
let a = new Animal();
console.log(a);
a.say();
a.run();

在类的混入当中,被混入的类当中的属性是不能被继承的可以查看下图即可验证:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap