169 похожих чатов

Ребят всем привет, объясните пожалуйста в чем разница между never

и void?

Есть функция,

generateError(message: string): void {
console.log(message)
}

generateError(message: string): never{
throw new Error(message)
}

И в верхнем случае функция никогда ничего не вернет, и в нижнем. Может я не понимаю смысл "никогда не вернет"?

9 ответов

20 просмотров

В первом случае неявно, но вернёт undefined. Это легко проверить. Вторая действительно ничего не вернёт, потому что не выполнится до конца

Void это функция, которая ничего не возвращает. Хотя, чисто технически, возвращает undefined, как было сказано выше Never это функция, которая никогда не закончится. Например, если внутри себя она может выкинуть ошибку или остановить приложения в принципе. Так, если ты вызовешь такую функцию и возвращаемый тип будет 100% never, то весь код после неё Тайпскрипт (или ваш редактор/IDE) будет позначать как недоступный, т.е. он никогда не выполнится

Agent_RBY_
Void это функция, которая ничего не возвращает. Хо...

Ещё, если функция возвращает, например, string | never, то можно сделать так const result = maybeNeverFunc() // string | never if (result) { // result: string } // result: never, весь код что будет ниже - недоступен

void как тип возврата функции подразумевает, что функция может возвращать что угодно, но возврат будет проигнорирован. Особенно полезно при типизации коллбэков never подразумевает, что код, где есть это значение никогда не будет выполнятся. Полезно при типизации функций, которые могут выбрасывать ошибки и при проверке полноты. Это всё в хандбуке хорошо описано. В первом примере функция вернет undefined, во втором ничего не вернет, т.к. код после исключения не будет выполнятся.

Alexandr
void как тип возврата функции подразумевает, что ф...

Ещё вроде never и void в некоторых кейса при выводе типов через infer могут помогать, но это уже что-то на грани темной магии.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта