Angularjs 到 Angular 迁移:工厂原型

Angularjs to Angular Migration: factory prototype

我正在从 angularjs 迁移到 angular。我已经做了很多,但我仍然受制于工厂和原型。 Card代表打牌。


        function Card() {
            this.remoteId = 0;
            this.version = 0;
            this.name = "";
            this.stars = 0;
        }

       Card.prototype = {
            getFromRemote: getFromRemote,
            initFromRemote: initFromRemote,
            updateFromCard: updateFromCard,
            createImage: createImage,
           };


      return (Card);
     }

现在我只是想知道如何迁移它,因为 angular 中没有更多的工厂。我正在考虑像 angular 教程 https://angular.io/tutorial/toh-pt1 中那样使 Card 函数成为一个卡片界面。你认为这是个好主意还是我错过了什么? 任何帮助或想法将不胜感激!!!!

您可以结合使用抽象 class 和构造函数:

abstract class 获取原型的功能。

初始值设置逻辑可以放在constructor里面。 playgrond-link

 abstract class AbsCard {

  abstract remoteId: number;
  abstract version: number;
  abstract name: string
  abstract stars: number;

  public initFromRemote(): void {
    this.remoteId = 0;
  }

  public print() {
    console.log(this);
  }

}

class Card extends AbsCard {

  public remoteId: number = 0;
  version: number = 0;
  name: string = '';
  stars: number = 0;
  
  public constructor() { 
    super();
    /* other creation logic can come here */
  }
}

let c = new Card();
c.print();