割とよくあるのは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/






コメント