foo
という名前の変数を作成しました。それに代入されるリテラル値は'Hello'
のみを許可します。これは以下のとおりです:boolean
とnumber
リテラル型もサポートしています。Type string is not assignable to type "foo"
というエラーを受け取ります。次の例はこれを示しています。test
が{someProp: string}
型であると推定されるためです。この問題を解決するには、シンプルな型アサーションを使用して、TypeScriptに以下のようにリテラルを推測させます。CardinalDirection
の例のようにユニオン型の文字列リテラルを使用して文字列ベースの列挙型を模倣することができます。次の関数を使ってKey:Value
構造体を生成することさえできます:keyof typeof
を使ってリテラル型の合成を生成します。完全な例を次に示します。readOnly
オプションがあります。これは、boolean
またはリテラル文字列nocursor
(有効値: true、false、"nocursor")です。それは次のように宣言することができます: