特定の文字列or任意の文字列(typescript)

JavaScript

割とよくあるのはcolorをカラーコード指定させたいが、rgbやHEXカラーも許容したい場合があります。

type Color = ‘red’ | ‘blue’ | string
のように定義したくなりますが、この場合はアップキャストされてstringになります。
‘red’がstringのサブタイプなのでアップキャストされます。

一方で大文字のStringはstringとは似て非なる存在です。
Stringはstringを受け付けますが、stringはStringを受け付けません。

なので、上図のcolor3ように定義することで特定の文字列or任意の文字列を実現できます。

https://miyauchi.dev/ja/posts/typescript-literal-hack/

コメント