TypeScript-2 (Функции)

CoderStudio, 23.03.2023 10:35
TypeScript-2 (Функции)

Функции TypeScript похожи на функции JavaScript, но обладают некоторыми дополнительными возможностями.

Основное различие между JavaScript и TypeScript заключается в том, что в TypeScript используется система статической типизации. Это означает, что типы переменных определяются в момент их определения. В TypeScript функции также могут быть использованы для определения их типов.

Поэтому при определении функций в TypeScript применяются следующие два соображения.

  1. Указываются типы параметров функции: В TypeScript типы параметров, которые принимает функция, указываются явно. Это помогает заранее обнаружить ошибки, предотвращая передачу в функцию неправильных типов.
  2. Указывается тип возвращаемого значения функции: В TypeScript также указывается тип возвращаемого значения функции. Это помогает заранее обнаружить ошибки, предотвращая возврат неправильных типов.

В JavaScript функции обычно определяются следующим образом

function sum(a, b) {
  return a + b;
}

При этом не указывается, какие аргументы будет принимать функция и какое значение она будет возвращать.

В TypeScript функции обычно определяются путем указания их типа

function sum(a: number, b: number): number {
  return a + b;
}

Мы можем проанализировать это определение более систематически следующим образом.

function functionName(parameter1: type, parameter2: type): returnType {
  // 
}

Здесь functionName - это имя функции. parameter1, parameter2 и т.д. - это имена параметров, передаваемых функции, и каждый из них имеет заданный тип. returnType задает тип значения, которое вернет функция.

Если мы хотим определить функцию без типа возвращаемого значения

function sayHello(name: string) {
  console.info(`Hello ${name}!`);
}

sayHello("Alice"); 

Как показано в этом коде, тип возвращаемого значения не указывается.

Примеры

1- Функция, которая выдает сумму двух чисел

function calculateSum(a: number, b: number): number {
  return a + b;
}

const result = calculateSum(2, 3);
console.info(result); // 5

2- Функция, преобразующая первую букву слова в верхний регистр

function capitalize(str: string): string {
  return str.charAt(0).toUpperCase() + str.slice(1);
}

console.info(capitalize("hello")); // "Hello"

3.Функция, которая находит сумму чисел в массиве

function sumArray(numbers: number[]): number {
  let sum = 0;
  for (let number of numbers) {
    sum += number;
  }
  return sum;
}

console.info(sumArray([1, 2, 3, 4, 5])); // 15

Функция принимает массив чисел, называемый параметром numbers, и возвращает значение типа number. В определении функции тип параметра numbers указан как number[], что означает, что этот параметр принимает только массивы чисел.

Внутри определения функции определяется переменная sum, которая инициализируется в 0. Затем, используя цикл for, каждое число в массиве принимается за числовую переменную и добавляется к переменной sum.

4.Функция для проверки четности числа

function isEven(num: number): boolean {
  return num % 2 === 0;
}

console.info(isEven(4)); // true
console.info(isEven(5)); // false

Трюки в TypeScript:

  1. В функциях можно использовать параметры по умолчанию. Таким образом, не все параметры должны быть обязательными в вызовах функций.
function greet(name: string="World") {
  console.info(`Hello, ${name}!`);
}

greet(); // Hello, World!
greet("John"); // Hello, John!

2. TypeScript также поддерживает синтаксис стрелочной функции при использовании функций. Этот синтаксис позволяет писать более короткий и читабельный код.

const multiply = (x: number, y: number): number => x * y;

console.info(multiply(2, 3)); // 6

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

4. необязательные параметры в параметрах должны быть определены после обязательных параметров. В противном случае будет получена ошибка. Необязательные параметры определяются с помощью знака (?) после имени переменной, и ошибка не будет получена, если они не используются.

function printName(firstName: string, lastName?: string, middleName: string) {
  console.info(firstName + " " + middleName + " " + lastName);
}

printName("John", "Doe"); // HATA: Zorunlu parametre olan middleName sonrasında opsiyonel parametreler tanımlanmalı

Правильное использование

function printName(firstName: string, middleName: string, lastName?: string) {
  console.info(firstName + " " + middleName + " " + lastName);
}

Для лучшего понимания функций в TypeScript вы можете ознакомиться со следующими ресурсами.