TypeScript源码
class A {
hello() {
}
}
class B extends A{
welcome() {
}
}
TypeScript编译
var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); } return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var A = /** @class */ (function () { function A() { } A.prototype.hello = function () { }; return A; }()); var B = /** @class */ (function (_super) { __extends(B, _super); function B() { return _super !== null && _super.apply(this, arguments) || this; } B.prototype.welcome = function () { }; return B; }(A));
Babel源码
lass Auto { constructor(type, model) { this.type = type; this.model = model; } static hello() { } drive() { } } class Car extends Auto { constructor(type, model,name) { super(type, model); this.name = name; } welcome() { } } let car = new Car('客车','承载式','Cadillac');
Babel编译
var _createClass = function() { function defineProperties(target, props) { for(var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function(Constructor, protoProps, staticProps) { if(protoProps) defineProperties(Constructor.prototype, protoProps); if(staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _possibleConstructorReturn(self, call) { if(!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if(typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if(superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } function _classCallCheck(instance, Constructor) { if(!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Auto = function() { function Auto(type, model) { _classCallCheck(this, Auto); this.type = type; this.model = model; } _createClass(Auto, [{ key: 'drive', value: function drive() { } }], [{ key: 'hello', value: function hello() {} }]); return Auto; }(); var Car = function(_Auto) { _inherits(Car, _Auto); function Car(type, model, name) { _classCallCheck(this, Car); var _this = _possibleConstructorReturn(this, (Car.__proto__ || Object.getPrototypeOf(Car)).call(this, type, model)); _this.name = name; return _this; } _createClass(Car, [{ key: 'welcome', value: function welcome() { } }]); return Car; }(Auto); var car = new Car('客车', '承载式', 'Cadillac');