Вступ до типів функцій у TypeScript

TypeScript вимагає типізації для всього. Це стосується і ваших функцій. Ви повинні визначати типи для вхідних та вихідних даних.

Function Syntax

Ви визначаєте типи вхідних параметрів та тип результату ось так:

function add(x: number, y: number): number { return x + y; }

TypeScript також використовує виведення типів (type inference). Вам не завжди потрібно вказувати тип результату — компілятор знайде його самостійно.

Якщо ваша функція повертає різні типи, TypeScript це врахує. Наприклад, якщо функція повертає число або рядок, компілятор розпізнає обидва варіанти.

Special Return Types

  • void: використовуйте це, коли функція нічого не повертає.
  • never: використовуйте це, коли функція викидає помилку або зупиняє програму.

Parameters

Ви можете зробити параметри необов'язковими за допомогою знака питання.

function makeProfile(name: string, age: number, url?: string) { // code }

Ви також можете використовувати значення за замовчуванням. Це робить параметр необов'язковим без використання спеціальних символів.

function makeProfile(name: string, age: number, url: string = "www.example.com") { return name + " visits " + url; }

Callback Functions

Функції — це значення. Ви можете передавати їх як аргументи. Щоб визначити тип callback-функції, використовуйте такий синтаксис:

function makePage(func: (n: string, a: number, u?: string) => string, param1: string, param2: number) { func(param1, param2); }

Імена параметрів у callback-функції не мають значення. Важливі лише типи.

Arrays of Functions

Якщо вам потрібен список функцій, визначте їх як масив відповідного типу функції.

function applyMath(funcs: ((a: number, b: number) => number)[], x: number, y: number) { // code }

Rest Parameters

Використовуйте оператор spread, щоб приймати будь-яку кількість аргументів. Це дозволяє зберігати всі вхідні дані в масиві.

function sum(...numbers: number[]) { // code }

sum(1, 2, 3);

Source: https://dev.to/jsha/introduction-to-typescript-function-types-hin