[解決済み】文字列の値を持つenumの作成
2022-03-26 14:56:27
質問
以下のコードで
enum
をTypeScriptで作成します。
enum e {
hello = 1,
world = 2
};
そして、その値には、以下のようにアクセスすることができます。
e.hello;
e.world;
を作成するにはどうすればよいのでしょうか?
enum
を文字列値で指定できますか?
enum e {
hello = "hello", // error: cannot convert string to e
world = "world" // error
};
解決方法は?
TypeScript 2.4
文字列列の列挙が可能になったので、あなたのコードがそのまま動くようになりました。
enum E {
hello = "hello",
world = "world"
};
????
TypeScript 1.8
TypeScript 1.8以降では、文字列リテラル型を使用して、名前付きの文字列値に対して信頼性と安全性を提供することができる(これは部分的にenumが使用されている目的である)。
type Options = "hello" | "world";
var foo: Options;
foo = "hello"; // Okay
foo = "asdf"; // Error!
もっと見る : https://www.typescriptlang.org/docs/handbook/advanced-types.html#string-literal-types
レガシーサポート
TypeScriptのEnumは数値ベースです。
静的メンバを持つクラスを使用することはできますが。
class E
{
static hello = "hello";
static world = "world";
}
無地でもいいんじゃない?
var E = {
hello: "hello",
world: "world"
}
更新しました。
という要件に基づいて、以下のようなことができるようになりました。
var test:E = E.hello;
は、これを満たすものです。
class E
{
// boilerplate
constructor(public value:string){
}
toString(){
return this.value;
}
// values
static hello = new E("hello");
static world = new E("world");
}
// Sample usage:
var first:E = E.hello;
var second:E = E.world;
var third:E = E.hello;
console.log("First value is: "+ first);
console.log(first===third);
関連
-
[解決済み] 未使用のパラメータに対する型チェックをスキップする
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] クラス定数を実装するには?
-
[解決済み] TypeScriptで文字列をenumに変換するには?
-
[解決済み] Typescript オブジェクトのインデックス付きメンバの型を強制する?
-
[解決済み] TypeScriptのオブジェクトリテラルでの型定義
-
[解決済み] Typescript によるインターフェース型チェック
-
[解決済み] Angular2 ngSwitchステートメントでtypescriptのenum値を使用する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Typescript: スプレッド型はオブジェクト型からしか作成できない
-
[解決済み] プロパティ 'values' はタイプ 'ObjectConstructor' に存在しません。
-
[解決済み] Typescript ReferenceError: exports が定義されていません。
-
[解決済み] オブジェクトの配列に対してインターフェースを定義するには?
-
[解決済み] TypeScriptでオブジェクトに動的にプロパティを割り当てるには?
-
[解決済み] TypeScriptの "*.d.ts "について
-
[解決済み] TypeScriptでインターフェースファイルの定義に基づいたオブジェクトを作成するには?
-
[解決済み】タイプからプロパティを除外する
-
[解決済み】TypeScriptのインターフェイスで特定の文字列を要求する方法
-
[解決済み] TypeScriptでenumのような型を作成する方法は?