Typescript 中類的繼承


Typescript中類的定義與繼承與后端開發語言java/C#等非常像,實現起來非常方便,而且代碼便於閱讀。

用Typescript寫較大項目時是非常有優勢的。

/**
 * BaseClass
 */
class BaseClass {
    constructor(name:string,age:number) {
        this.name=name;
        this.age=age;
    }
    
    name:string;
    age:number;
    
    sayName():void{
        console.log(this.name);
    }
}

/**
 * SubClass
 */
class SubClass extends BaseClass {
    constructor(name:string,age:number,job:string    ) {
        super(name,age);
        this.job=job;
    }
    job:string;
    
    sayJob():void{
        console.log(this.job);
    }
    
}

var subClass=new SubClass('張三',18,'Coder');
subClass.sayJob();
subClass.sayName();
console.log(subClass);

編譯后生成的純原生Javascript,也是非常優雅的。

var __extends = (this && this.__extends) || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};
/**
 * BaseClass
 */
var BaseClass = (function () {
    function BaseClass(name, age) {
        this.name = name;
        this.age = age;
    }
    BaseClass.prototype.sayName = function () {
        console.log(this.name);
    };
    return BaseClass;
})();
/**
 * SubClass
 */
var SubClass = (function (_super) {
    __extends(SubClass, _super);
    function SubClass(name, age, job) {
        _super.call(this, name, age);
        this.job = job;
    }
    SubClass.prototype.sayJob = function () {
        console.log(this.job);
    };
    return SubClass;
})(BaseClass);
var subClass = new SubClass('張三', 18, 'Coder');
subClass.sayJob();
subClass.sayName();
console.log(subClass);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM