問題描述#
考察以下 TS 類型。
type Animal = "cat" | "dog" | string;
正常情況下,我們可能會按上面的方式來寫,但是這在 vscode 上得不到良好的補全提示。
const animal: Animal = ''; // 輸入引號後沒有補全提示
解決方案#
為了解決這個問題可以採取以下兩種方式來實現。
// 方案一 使用 `string & {}` 替代 `stirng`
type Animal = "cat" | "dog" | (string & {});
// 方案二 使用 Omit 手動從 `string` 中排除類型
type Animal = "cat" | "dog" | Omit<string, "cat" | "dog">
const animal: Animal = ''; // 輸入引號後可以看到正確的補全提示
結果#
之前(沒有補全提示)#
之後(完善的補全提示)#