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

Muhammad Ibrahim Alvi 2024年2月15日
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 型も取得します。 変数の型は、intypeofinstanceof などの演算子で絞り込むことができます。

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

コード例:

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);

出力:

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

Muhammad Ibrahim Alvi avatar Muhammad Ibrahim Alvi avatar

Ibrahim is a Full Stack developer working as a Software Engineer in a reputable international organization. He has work experience in technologies stack like MERN and Spring Boot. He is an enthusiastic JavaScript lover who loves to provide and share research-based solutions to problems. He loves problem-solving and loves to write solutions of those problems with implemented solutions.

LinkedIn

関連記事 - TypeScript Keyword