如果还有其他操作,可以试试 type Constructor<T = {initData: Function}> = new (...args: any[]) => T; function AutoSuper<T extends Constructor>(constructor: T) { return class extends constructor { constructor(...args: any[]) { super(...args); this.initData(...args); } }; } clas...
class ColorPoint extends Point {} 1. 上面代码定义了一个ColorPoint类, 该类通过extends关键字, 继承了Point类的所有属性和方法。 但是由于没有部署任何代码, 所以这两个类完全一样, 等于复制了一个Point类。 下面, 我们在ColorPoint内部加上代码。 class ColorPoint extends Point { constructor(x, y, color...
constructor(name:string,age:number,sex:string,){ this.name = name; this.age = age; this.sex = sex; } run(){ return `我是${this.name},${this.sex},我今年${this.age}岁了` } } class Children extends Person{ constructor(name:string,age:number,sex:string){ super(name,age,sex) } ...
- 执行 super(...) 来调用一个父类constructor(只能在子类的constructor中) 补充:箭头函数没有 super 和 this 重写一个 constructor# // 根据 规范,如果一个类扩展了另一个类并且没有 constructor,那么将生成下面这样的 constructor:classChildextendsParent{// 为没有自己的 constructor 的扩展类生成的constructor(...
class Web extends Person{ constructor(name:string){ super(name)/*初始化父类的构造函数*/} work():string{returnthis.name + '在工作'; } } let a=newWeb('李雷'); alert(a.run()); alert(a.work()); 子类继承父类的时候,既可以继承父类的属性和方法,也可以自己创建新的方法;当子类的方法和父...
classPerson{name:string;constructor(name:string){this.name=name}sayHello():void{alert(this.name+' hello')}}classSonextendsPerson{constructor(name:string){super(name)}}lets1=newSon('张五')s1.sayHello(); //子类继承父类,并且子类有自己的方法,与父类同名,执行时候,显示子类方法 ...
这段代码的意思是返回一个类,这个类继承了 constructor,它里面附加 getDecorator 方法,那么我们也可以在这个返回的类里边添加属性或修改属性值,代码修改如下: functionaddDecorator<Textendsnew(...args:any[])=>{}>(constructor:T){returnclassextendsconstructor{name="decorator";getDecorator(){console.log("get ...
下面来看一下作为面向对象的三大也行之一的继承,在 TypeScript 中,可以使用 extends 关键字来定义类继承的抽象模式: class A {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}getName() {return this.name;}}class B extends A {job: string;cons...
classAnimal{name:string;constructor(name:string){this.name=name;}sayHello(){console.log(`Hello, I'm${this.name}`);}}classDogextendsAnimal{breed:string;constructor(name:string,breed:string){super(name);this.breed=breed;}bark(){console.log('Woof!');}}constdog=newDog('Buddy','Labrador');...
new 一个实例的时候,constructor会被自动执行 简写方式:直接在constructor参数前加定义的类型即可 如果父类有构造器,子类也有构造器,这个时候子类需要自动执行一个父类的构造器,且需要按照父类的参数传过去 如果父类没有构造器,也需要执行空的super() 6、getter 和 setter ...