パターン1とパターン2、どちらが適切なのでしょうか?
目的としていることとしては、コードを書く側の人間がTeratailクラスをインスタンス化する時に渡す引数であるurl文字列を直書きすることなく、IDEの入力補助を用いて簡単に入力出来るようにしたいことです。出来れば、パターン1のように型チェックも出きたらなお良いのですが、パターン2では型チェックはできません。
引数で型もチェックできて、かつ、宣言時にkeyに対する値を代入出来るような方法というのは、存在しないのでしょうか?
他に適切なやり方がありましたらご教授頂けると嬉しいです。
パターン1
TypeScript
1enum TERATAIL_HOST_TYPE { 2 3 JP, 4 US 5 6} 7 8class Teratail { 9 10 private _hostName: string; 11 12 constructor(hostName: TERATAIL_HOST_TYPE) { 13 14 switch (hostName){ 15 case TERATAIL_HOST.JP: 16 this._hostName = "http://www.teratail.jp"; 17 break; 18 case TERATAIL_HOST.US: 19 this._hostName = "http://www.teratail.us"; 20 break; 21 } 22 23 } 24 25} 26 27let teratail: Teratail = new Teratail(TERATAIL_HOST_TYPE.JP);
パターン2
TypeScript
1const TERATAIL_HOST_TYPE = { 2 3 JP: "http://www.teratail.jp", 4 US: "http://www.teratail.com" 5 6}; 7 8class Teratail { 9 10 private _hostName: string; 11 12 constructor(hostName: string) { 13 14 this._hostName = hostName; 15 16 } 17 18} 19 20let teratail: Teratail = new Teratail(TERATAIL_HOST_TYPE.JP);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。