[解決済み] Enumに関数を追加する
2022-12-02 07:24:53
質問
TypeScriptでEnum型に関数を追加することは可能でしょうか?
例えば
enum Mode {
landscape,
portrait,
// the dream...
toString() { console.log(this); }
}
または
class ModeExtension {
public toString = () => console.log(this);
}
enum Mode extends ModeExtension {
landscape,
portrait,
}
もちろん
toString()
のような関数が含まれるでしょう。
switch
しかし、ユースケースは次のような流れになるでしょう。
class Device {
constructor(public mode:Mode) {
console.log(this.mode.toString());
}
}
を拡張する理由は理解できました。
enum
を拡張することが奇妙なことであるかもしれない理由は理解できますが、ただそれが可能かどうか疑問に思っています。
どのように解決するのですか?
Enumとは別のクラスを用意し、それを使って欲しいものを取得するか、名前空間をEnumにマージして、同じ場所のように見えるところで全てを取得するかのどちらかでしょう。
モード・ユーティリティ・クラス
これは正確にあなたが求めているものではありませんが、これは静的メソッドを使用して"Mode to string"の動作をカプセル化することを可能にします。
class ModeUtil {
public static toString(mode: Mode) {
return Mode[mode];
}
}
このように使うことができます。
const mode = Mode.portrait;
const x = ModeUtil.toString(mode);
console.log(x);
モード列挙/名前空間マージ
追加のメソッドを持つEnumのように見えるものを作成するために、Enumと名前空間をマージすることができます。
enum Mode {
X,
Y
}
namespace Mode {
export function toString(mode: Mode): string {
return Mode[mode];
}
export function parse(mode: string): Mode {
return Mode[mode];
}
}
const mode = Mode.X;
const str = Mode.toString(mode);
alert(str);
const m = Mode.parse(str);
alert(m);
関連
-
[解決済み] Godotで文字列をenumに変換するには?
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] Pythonで'Enum'を表現するにはどうしたらいいですか?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Godotで文字列をenumに変換するには?
-
[解決済み] Typescript の enum スイッチが機能しない
-
[解決済み] Goでenumを表現する慣用的な方法は何ですか?
-
[解決済み] enumの項目名を取得する方法は?
-
[解決済み] angular2 のビューテンプレートで enum を渡す
-
[解決済み] Dart enumの "値 "を取得する方法
-
[解決済み] TypeScriptでenumのような型を作成する方法は?
-
[解決済み] TypeScriptでenumのバリアントはどのように動作するのですか?
-
[解決済み] ngFor を使用して、Typescript Enum を文字列の配列として反復処理するにはどうすればよいですか?
-
[解決済み] Dartは列挙をサポートしていますか?