割とよくあるのはcolorをカラーコード指定させたいが、rgbやHEXカラーも許容したい場合があります。
type Color = ‘red’ | ‘blue’ | string
のように定義したくなりますが、この場合はアップキャストされてstringになります。
‘red’がstringのサブタイプなのでアップキャストされます。
一方で大文字のStringはstringとは似て非なる存在です。
Stringはstringを受け付けますが、stringはStringを受け付けません。
![](https://once-and-only.com/wp-content/uploads/2023/10/image.png)
なので、上図のcolor3ように定義することで特定の文字列or任意の文字列を実現できます。
![](https://once-and-only.com/wp-content/uploads/cocoon-resources/blog-card-cache/666b6c0568627bc677cfcf821b8162b3.png)
TypeScriptで特定の文字列または全ての文字列を定義する | miyauci.me
TypeScriptで'string'|stringを定義する方法を紹介します。通常はstring型にアップキャストされてしまいますが、ハッキーな方法でこれを解決します。
コメント