Название фичи: Never

Описание:

Never представляет тип, значение которого никогда не наступает. Never можно представить себе как вариант запрета использовать ключевое слово return в функции.

Аналог в c# / js: -

Решаемая проблема:

Тип Never указывает на то, что функция ни при каких обстоятельствах не может ничего вернуть из себя, например, она всегда бросает ошибку или включает в себя бесконечный цикл, который не может ничего вернуть из функции. Этот тип является субтипом и может быть присвоен любому типу, но не наоборот.

Когда разработчик хочет, что бы тот кто вызывает функцию, понимал, что она не пропустит выполнение кода дальше.

Пример возникновения:

Функция всегда бросает исключения или выход из которой никогда не происходит (например бесконечный цикл).

Переменная никогда не должна принимать значение true.

Как решить проблему:

Присвоить функции тип возвращаемого значения как Never.

Детали: Тип never является подтипом любого типа. Переменная типа never может быть присвоена переменной любого другого типа. С другой стороны, нет такого типа, который будет являться подтипом данного типа, также как и переменной данного типа ничего нельзя присвоить кроме переменной такого же типа (never).

Синтаксис:

function fail(message: string): never {
    throw new Error(message);
}

Перекомпилированный в JS код:

function fail(message) {
    throw new Error(message);
}

results matching ""

    No results matching ""