Kodokon kodokon.com

Типизация функций: параметры, возврат, необязательные аргументы

Сделай свои функции надёжнее, типизируя их параметры, возвращаемое значение и необязательные параметры.

9 мин · 3 вопросов

Открыть этот урок в Kodokon

Функция - это переиспользуемая мини-программа: она получает параметры (свои входные данные) и может вернуть значение (свой результат). Типизировать функцию значит указать тип каждого параметра, а затем тип возвращаемого значения, который пишется после закрывающей скобки.

TYPESCRIPT
function greet(name: string): string {
  return "Hello " + name + "!";
}

const message = greet("Karim");
console.log(message); // "Hello Karim!"
Вход: строка. Выход: строка.

Некоторые функции ничего не возвращают: они просто выполняют действие, например выводят сообщение. Тогда их тип возврата - void, слово, которое означает «пусто». TypeScript предупредит тебя, если ты попробуешь использовать их результат как значение.

TYPESCRIPT
function logWelcome(name: string): void {
  console.log("Welcome, " + name + "!");
}

logWelcome("Fatou"); // prints, but returns nothing
void обозначает отсутствие возвращаемого значения.

Так же как и свойство интерфейса, параметр можно сделать необязательным с помощью ?. Тогда вызывающий код может его передать, а может и нет. Внутри функции не забудь обработать случай, когда его нет.

TYPESCRIPT
function makeCoffee(size: string, sugar?: boolean) {
  if (sugar) {
    return "A " + size + " coffee with sugar.";
  }
  return "A " + size + " coffee without sugar.";
}

makeCoffee("large", true); // with sugar
makeCoffee("small");       // sugar is missing
sugar? можно передать... а можно и нет.
TYPESCRIPT
function repeat(word: string, times: number = 2) {
  return word.repeat(times);
}

console.log(repeat("ha"));    // "haha"
console.log(repeat("ha", 3)); // "hahaha"
Вариант: значение по умолчанию через знак =.

Проверка знаний

Убедись, что запомнил ключевые моменты этого урока.

  1. В function greet(name: string): string - к чему относится второй string?
    • К типу параметра name
    • К типу значения, которое возвращает функция
    • К имени функции
  2. Какой тип говорит, что функция ничего не возвращает?
    • null
    • empty
    • void
    • zero
  3. Где в функции должен стоять необязательный параметр?
    • После обязательных параметров
    • Перед обязательными параметрами
    • В любом месте списка