すべての文字列を受け入れつつ、特定の文字列のみを補完候補に表示させたい場合があります。例えば、CSS の色を指定するプロパティの値には、カラーコードで指定する #000000 や #ffffff などの文字列を受け入れつつ、red や blue などの特定の文字列を指定します。
単純に "red" | "blue" | string とすると、"red" や "blue" が補完候補には表示されません。
文字列リテラルの共用型に (string & {}) を付け加えることで、任意の文字列を受け取りつつ、"red" や "blue" のような特定の文字列を補完候補に表示できます。
type Color = "red" | "blue" | (string & {});