albatrosary's blog

UI/UXとエンタープライズシステム

Angular DI でコンストラクター引数に public or private を入れるのはなぜ?

Angular DI でコンポーネントにインジェクトするときコンストラクターに引数で public or private を入れるのはなぜだろう?しかもどちらか書かないとインジェクトされない。というので数行メモします。

TypeScript で3つのクラス(hogeClass、fugaClass、puyoClass)を作ってみる。

class hogeClass {
  constructor(private hoge: string) {
      
  }
}

class fugaClass {
  constructor(public fuga: string) {
      
  }
}

class puyoClass {
  constructor(puyo: string) {
      
  }
}

これをビルドすると

var hogeClass = /** @class */ (function () {
    function hogeClass(hoge) {
        this.hoge = hoge;
    }
    return hogeClass;
}());
var fugaClass = /** @class */ (function () {
    function fugaClass(fuga) {
        this.fuga = fuga;
    }
    return fugaClass;
}());
var puyoClass = /** @class */ (function () {
    function puyoClass(puyo) {
    }
    return puyoClass;
}());

なるほど。

このコードは

https://www.typescriptlang.org/play/index.html

で生成しています。 似たようなことを書いているブログもあったので貼り付けとく

kendaleiv.com