タイプに追加する方法

1
2022.01.13

次のように宣言された型があります。

type colors = "green" | "blue" | "red"; 

条件に基づいて追加する方法はありますか?

とか:

const shouldAppend = // some logic to return true / false.

if (shouldAppend) {
    colors.append('yellow'); // invalid syntax
}

型を次のように更新する必要があります。

colors = "green" | "blue" | "red" | "yellow";

型に追加することは可能ですか、どうすればいいですか?

回答
2
2022.01.13

TypeScriptではできません。タイプを変更することはできませんが、新しいタイプを作成することは許可されています。

type Colors = "green" | "blue" | "red";

type NewColors<T extends string> = Colors | T

// Colors | "yellow"
type Result = NewColors<'yellow'>

TypeScriptには type scopevalue/runtime scopeの 2 つのスコープがあることに注意してください。 runtime scopeで型を使用することはできません。つまり、コンパイル中にすべての型がソースコードから削除されます。

おそらく、それはあなたが望むほとんど正確に行うことができますので、 再スクリプトを試してみてください:

type t = ..

type t += Other

type t +=
  | Point(float, float)
  | Line(float, float, float, float)

それはExtensible Variantと呼ばれます。