Open2

typescriptでenumを表現する(unionを使おう)

mtskhsmtskhs

typescriptでは、enumではなく、unionを使って表現すべきというが、どうすれば良いのかメモ

mtskhsmtskhs

一旦欲しい機能はこんな感じだったのでメモ

const animals = ["gorilla", "dog", "cat"] as const;
type Animals = typeof animals[number];

const isAnimals = (who: string): who is Animal =>
  animals.includes(who as any); //type error をさけるためanyにキャスト

const someFunc =() =>{
    const whoami = "human" // ここではstring
    if (!isAnimals(whoami)){
        // 動物じゃない string型
    }
    // ここではAnimal型を満たすとして実装できる
}