Вступ до типів функцій у 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