TypeScript - pass to constructor entire object

前端 未结 3 1558
我在风中等你
我在风中等你 2020-12-11 18:48

I have a class at type script:

export class Child {
  name:string;
  age:number;
}

I want to force class instances to have only properties

3条回答
  •  庸人自扰
    2020-12-11 19:07

    What we want:

    • one time declare class fields
    • have methods in our class

    Solution:

    class Animal {
      name: string = 'default value';
      group: string = 'default value';
    
      constructor(data: Partial = {}) {
        Object.assign(this, data)
      }
    
      echo() {
        return `My name is ${this.name}, I'm from: ${this.group}`;
      }
    }
    
    class Dog extends Animal {
      echo() {
        return super.echo() + ' from Dog class';
      }
    }
    
    const dog = new Dog({name: 'Teddy'});
    console.log(dog.echo());
    

    Animal - root class

    Dog - nested class

    All works without typescript errors

提交回复
热议问题