Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «void у функції». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Тип `void` у функції означає, що **ця функція нічого не повертає (результат не використовується)** - тобто функція виконує якусь дію, але не повертає значення через `return`. **Ключове:** фактично функція без `return` завжди повертає `undefined`, але з погляду типів у TS це `void` - «нічого значимого не повертає», а не «зовсім нічого не повертає».Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Що означає `void` у функції Тип `void` у функції означає: > «Ця функція **нічого не повертає** (результат не використовується)». Тобто - функція **виконує якусь дію** (логує, змінює стан, викликає побічний ефект), але **не повертає значення через** `return`. --- ### Приклад 1. Проста функція з `void` ```javascript function logMessage(message: string): void { console.log("Повідомлення:", message); } ``` - Функція **нічого не повертає**, лише виводить у консоль. - Якщо ти спробуєш повернути щось - TypeScript покаже помилку: ```javascript function logMessage(message: string): void { return "Done"; // Помилка: функція з типом void не повинна повертати значення } ``` --- ### Приклад 2. Фактично повертається `undefined`, але тип - `void` Функції в JavaScript, які не мають `return`, **завжди повертають** `undefined`, але з погляду типів у TS - це `void`. ```javascript function sayHello(): void { console.log("Привіт!"); } const result = sayHello(); console.log(result); // undefined ``` > `void` -> «не повертає нічого значимого», > а не «зовсім нічого не повертає». --- ### Приклад 3. Функції зворотного виклику (колбеки) з `void` Тип `void` часто використовується в **callback-функціях**, де результат виклику не має сенсу. ```javascript function forEach<T>(array: T[], callback: (item: T) => void): void { for (const item of array) { callback(item); } } forEach([1, 2, 3], (n) => console.log(n * 2)); ``` - `callback` має тип `(item: T) => void` - він викликається, але його результат не використовується. - Навіть якщо всередині `callback` щось повертається, TypeScript це **ігнорує**: ```javascript forEach([1, 2, 3], (n) => n * 2); // ок, return ігнорується ``` --- ### Приклад 4. Асинхронна функція з `void` Іноді `void` використовують, щоб явно показати: результат промису не використовується, і ми не чекаємо на його завершення. ```javascript async function saveData(): Promise<void> { console.log("Зберігаємо дані..."); } ``` або при виклику: ```javascript function startProcess(): void { void saveData(); // спеціально кажемо TypeScript: "не чекай результату" } ``` > Тут `void` перед викликом - **оператор**, не тип (він відкидає значення). > Це поширений патерн у TS при виклику async-функцій без `await`. --- ### Приклад 5. Відмінність `void` від `undefined` | Тип | Опис | Приклад | |---|---|---| | `void` | «нічого не повертає (не використовується)» | `function log(): void { ... }` | | `undefined` | «явно повертає значення `undefined`» | `function empty(): undefined { return undefined; }` | ```javascript function a(): void {} function b(): undefined { return undefined; } const x = a(); // x має тип void const y = b(); // y має тип undefined ``` > `void` і `undefined` близькі, але не взаємозамінні. > `void` - це **обіцянка «нічого не повертати»**, > а `undefined` - **реальне значення**. --- ### Приклад 6. Використання `void` в інтерфейсах ```javascript interface ButtonProps { label: string; onClick: () => void; } const button: ButtonProps = { label: "Натисни", onClick: () => { console.log("Кнопку натиснуто!"); }, }; ``` > `onClick` має тип `() => void`, > тому що обробник події **не повертає результат**. --- ## Підсумок | Властивість | Значення | |---|---| | Де використовується | Тип, що повертається функцією | | Що означає | "Функція нічого не повертає" | | Фактична поведінка в JS | Повертає `undefined`, але це ігнорується | | Застосування | Колбеки, обробники подій, логери, побДля рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.