TGViewer
Web Overflow 🇺🇦 Web Overflow 🇺🇦 @web_overflow · 3.82K subscribers
Post #1095 6.58K
Function overload 🥵

Можливо, ви коли-небудь працювали з мовою, яка дозволяє перевантажувати функції. В JavaScript такої потреби немає, адже немає статичної типізації. В TypeScript, хоч типи і не такі як в компільованих мовах, перевантаження функцій теж доступне.

Нехай вам чомусь потрібна функція convert, яка перетворює boolean в number, а number в string. Звісно, можна спробувати Generics, але тут можна обійтись і без них, просто перевантаживши функцію.

Спочатку, потрібно написати "голову" функції для кожного випадку. У вас обовʼязково має бути різний список аргументів (за довжиною чи за типом).
function convert(x: boolean): number;
function convert(x: number): string;


Після цього вам необхідно написати саме тіло функції. Воно обовʼязково має задовольняти кожне попереднє оголошення функції.
function convert(x: boolean | number): number | string {
return typeof x === "boolean" ? Number(x) : String(x)
}


Зауважте, що TypeScript буде використовувати лише оголошення без тіла функції, коли працюватиме з типізацією. Виглядатиме все так, наче у вас дві різні функції, проте з однаковим іменем.

convert(Math.random() > 0.5 ? true : 1)

Отак не вийде зробити, адже немає функції convert, яка може прийняти boolean | number, вона може прийняти лише конкретно boolean або number. Саме ця частина спочатку часто може збивати з пантелику.

Якщо хочете дослідити це питання більше, нижче додаємо вам посилання на Handbook TypeScript.

👉 Відкрити посилання

#tips
  • 👍 10
  • 🔥 3
  • ❤ 1
More from @web_overflow
  1. Sep 9, 2026Як вам жабка за 2к? 😁
  2. Aug 24, 202635 років Незалежності України 🇺🇦 Сьогодні хочеться просто побажати нам берегти своє, цін…
  3. Aug 3, 2026Трохи випали з ефіру, але не переживайте, у нас усе стабільно: Юра багато працює, а Настя…
  4. Jul 1, 2026До кінця тижня ми не знаємо хто цей ваш АІ 🌿
  5. Jun 19, 2026Не оновлюйте поки свою версію Node.js 😳 Зарелізив я, значить, учора 2 UI-апдейти, після я…
  6. Jun 12, 2026scrollbar-gutter 📜 Нещодавно пофіксив "ui-glitch" за допомогою overflow-y: scroll, і чере…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →