HOWTO · TypeScript

TypeScript での never キーワードの使用

このチュートリアルでは、TypeScript での never キーワードの使用について読者に深い理解を提供します。 このチュートリアルでは、TypeScript の never キーワードについて、コーディング例とそのユース ケースを使用して説明します。

このページの内容

このチュートリアルでは、TypeScript never キーワードでの新しいデータ型の使用に関する簡単なガイドラインを、開発者の間で使用されている一般的なユース ケースと共に提供します。

TypeScript での never キーワードの使用

never キーワードは TypeScript の新しい型で、発生しない値を指定します。 never タイプは、プログラマーが何かが起こらないと確信している場合に使用されます。

ここで、常に例外をスローするか、エンドポイントに戻らない関数を作成することを考えてみましょう。

コード例:

function throwNewError(errorMsg: string): never {
            throw new Error(errorMsg);
}

function keepInfiniteProcessing(): never {
            while (true) {
         console.log('I always does something and never ends :).')
     }
}
console.log(throwNewError("Error occured"));

上記のコーディング例では、throwNewError() 関数は呼び出されると常にエラーをスローします。一方、keepInfiniteProcessing() 関数は常に実行を続け、エンドポイントに到達することはありません。 while ループには、ループを決して終了させず、終了させない真の条件があります。 したがって、TypeScript の never 型は、関数から発生したり返されたりしない値を指定するために使用されます。

出力:

while ループには、呼び出されたときに常にエラーをスローする true 条件があります

変数は、真にならない any 型のガードによって狭められると、never 型も取得します。 変数の型は、in、typeof、instanceof などの演算子で絞り込むことができます。

これらがどこかで発生しないことが確実な変数の型を絞り込むことができます。

コード例:

function formatFunction(valueData: string | number) {
    if (typeof valueData === 'string') {
        return valueData.trim();
    } else {
        return valueData.toFixed(2); // we're sure it's number
    }
    // not a string or number
    // "value" can't occur here, so it's type "never"
}

let response = formatFunction("Hello");
    console.log(response);

出力:

発生しない場所がある変数の型を絞り込む