TypeScriptで様々な型を持つ配列をUnion型で表現

TypeScriptで数値と文字列の要素で構成された配列をUnion型で表現

TypeScriptでは、数値と文字列の要素で構成された配列をUnion型で表現することができます。
これを行うためには、配列の要素の型をnumber | stringと指定します。
以下はその例です。

// 数値と文字列の要素を持つ配列を定義
let mixedArray: (number | string)[] = [1, "hello", 42, "world"];

// 配列の各要素にアクセスする例
mixedArray.forEach(element => {
    if (typeof element === "number") {
        console.log(Number: ${element}); // number型の場合
    } else if (typeof element === "string") {
        console.log(String: ${element}); // string型の場合
    }
});

この例では、mixedArrayという名前の配列が、数値と文字列の要素を持つことができます。
配列の各要素の型はnumber | stringであるため、要素が数値であるか文字列であるかを動的に判定することができます。

数値と文字列の以外の要素もUnion型で表現できるのか

TypeScriptでは数値と文字列以外の要素もUnion型で表現できます。
例えば、数値、文字列、ブール値、およびオブジェクトを含む配列を定義する場合は、次のようにします。

// 数値、文字列、ブール値、オブジェクトの要素を持つ配列を定義
let mixedArray: (number | string | boolean | object)[] = [1, "hello", true, { key: "value" }];

// 配列の各要素にアクセスする例
mixedArray.forEach(element => {
    if (typeof element === "number") {
        console.log(Number: ${element}); // number型の場合
    } else if (typeof element === "string") {
        console.log(String: ${element}); // string型の場合
    } else if (typeof element === "boolean") {
        console.log(Boolean: ${element}); // boolean型の場合
    } else if (typeof element === "object") {
        console.log(Object: ${JSON.stringify(element)}); // object型の場合
    }
});

この例では、mixedArrayという名前の配列が、数値、文字列、ブール値、およびオブジェクトの要素を持つことができます。
配列の各要素の型をnumber | string | boolean | objectと指定することで、これらの要素を動的に扱うことができます。

他の型もUnion型に含めることができます。
例えば、undefinedやnullも追加できます。

// 数値、文字列、ブール値、オブジェクト、undefined、nullの要素を持つ配列を定義
let mixedArray: (number | string | boolean | object | undefined | null)[] = [1, "hello", true, { key: "value" }, undefined, null];

// 配列の各要素にアクセスする例
mixedArray.forEach(element => {
    if (typeof element === "number") {
        console.log(Number: ${element}); // number型の場合
    } else if (typeof element === "string") {
        console.log(String: ${element}); // string型の場合
    } else if (typeof element === "boolean") {
        console.log(Boolean: ${element}); // boolean型の場合
    } else if (typeof element === "object") {
        if (element === null) {
            console.log(Null); // nullの場合
        } else {
            console.log(Object: ${JSON.stringify(element)}); // object型の場合
        }
    } else if (element === undefined) {
        console.log(Undefined); // undefinedの場合
    }
});

このようにして、任意の型の要素を持つ配列をUnion型で定義することができます。