JavaRush /Курсы /Модуль 2: Fullstack /Обзор типов данных в TypeScript

Обзор типов данных в TypeScript

Модуль 2: Fullstack
3 уровень , 8 лекция
Открыта

9.1 Примитивные типы (Primitive Types)

TypeScript — это строго типизированный язык программирования, который расширяет возможности JavaScript за счет добавления типизации. Сейчас мы пройдемся по основным типам данных в TypeScript, включая примитивные и ссылочные типы.

Примитивные типы — это базовые типы данных, которые представляют одно значение. В TypeScript они включают следующие типы:

1. number

Тип number представляет как целые, так и дробные числа. В TypeScript все числа являются числами с плавающей запятой.

Пример:

TypeScript
    
      let age: number = 30;
      let temperature: number = 22.5;
      let hex: number = 0xfff; // Шестнадцатеричное число
      let binary: number = 0b1010; // Двоичное число
      let octal: number = 0o744; // Восьмеричное число
    
  

2. string

Тип string представляет строки, то есть последовательности символов. Строки могут быть заключены в одинарные или двойные кавычки, а также в обратные кавычки для шаблонных строк.

Пример:

TypeScript
    
      let firstName: string = 'John';
      let lastName: string = "Doe";
      let greeting: string = `Hello, my name is ${firstName} ${lastName}`;
    
  

3. boolean

Тип boolean представляет логическое значение, которое может быть true или false.

Пример:

TypeScript
    
      let isActive: boolean = true;
      let isComplete: boolean = false;
    
  

4. null и undefined

Типы null и undefined представляют значения, которые указывают на отсутствие значения.

Пример:

TypeScript
    
      let emptyValue: null = null;
      let notAssigned: undefined = undefined;
    
  

5. symbol

Тип symbol представляет уникальное и неизменяемое значение, которое может использоваться как идентификатор для свойств объектов. Символы создаются с помощью функции Symbol().

Пример:

TypeScript
    
      let uniqueId: symbol = Symbol('id');
    
  

6. bigint

Тип bigint представляет целые числа произвольной точности. bigint создается путем добавления суффикса n к числу или с помощью функции BigInt().

Пример:

TypeScript
    
      let largeNumber: bigint = 1234567890123456789012345678901234567890n;
      let anotherBigNumber: bigint = BigInt("1234567890123456789012345678901234567890");
    
  

9.2 Объектные типы (Object Types)

Ссылочные типы представляют сложные структуры данных, которые могут содержать несколько значений. В TypeScript они включают следующие типы:

1. object

Тип object представляет не примитивные значения, которые являются коллекцией свойств и методов.

Пример:

TypeScript
    
      let person: object = {
        name: 'Alice',
        age: 25
      };
    
  

2. Массивы (Array)

Массивы представляют собой коллекции элементов одного типа. В TypeScript можно использовать два синтаксиса для объявления массивов: с использованием квадратных скобок или с использованием типа Array<T>.

Пример:

TypeScript
    
      let numbers: number[] = [1, 2, 3, 4, 5];
      let strings: Array<string> = ['one', 'two', 'three'];
    
  

3. Кортежи (Tuple)

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

Пример:

TypeScript
    
      let tuple: [string, number, boolean] = ['hello', 42, true];
    
  

4. Функции (Function)

Функции в TypeScript можно объявить с указанием типов параметров и возвращаемого значения. Это помогает обеспечить правильное использование функций.

Пример:

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

      let result: number = add(5, 10);
    
  

5. Интерфейсы (Interface)

Интерфейсы позволяют определять структуру объектов, указывая, какие свойства и методы они должны иметь. Интерфейсы не компилируются в JavaScript, но используются для проверки типов.

Пример:

TypeScript
    
      interface User {
        name: string;
        age: number;
        isAdmin?: boolean; // Опциональное свойство
      }

      let user: User = {
        name: 'John',
        age: 30,
        isAdmin: true
      };
    
  

6. Классы (Class)

Классы используются для создания объектов с определенными свойствами и методами. TypeScript расширяет возможности классов, добавляя модификаторы доступа, абстрактные классы и интерфейсы.

Пример:

TypeScript
    
      class Person {
        private name: string;
        public age: number;

        constructor(name: string, age: number) {
          this.name = name;
          this.age = age;
        }

        public getName(): string {
          return this.name;
        }
      }

      let person = new Person('Alice', 25);
      console.log(person.getName());
    
  

7. Enums (Перечисления)

Перечисления позволяют определять набор именованных значений. Это полезно для создания групп связанных констант.

Пример:

TypeScript
    
      enum Color {
        Red,
        Green,
        Blue
      }

      let color: Color = Color.Green;
    
  

8. Union и Intersection Types

Union (объединенные) типы позволяют переменной быть одним из нескольких типов. Intersection (пересечение) типов позволяет объединять несколько типов в один.

Пример (Union):

TypeScript
    
      let value: string | number;
      value = 'Hello';
      value = 42;
    
  

Пример (Intersection):

TypeScript
    
      interface HasName {
        name: string;
      }

      interface HasAge {
        age: number;
      }

      // Объединяем интерфейсы HasName и HasAge в тип Person
      type Person = HasName & HasAge;

      // Создаем объект person, соответствующий типу Person
      let person: Person = {
        name: 'John', // (поле ' name ' из интерфейса HasName)
        age: 30 // (поле ' age ' из интерфейса HasAge)
      };
    
  

9.3 Специальные типы (Special Types)

1. Any

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

Пример:

TypeScript
    
      let dynamicValue: any = 'Hello';
      dynamicValue = 42; // Нет ошибки компиляции
      dynamicValue = true; // Нет ошибки компиляции
    
  

2. Unknown

Тип unknown похож на any, но с более строгими правилами. Вы не можете использовать значения типа unknown без предварительной проверки их типа.

Пример:

TypeScript
    
      let unknownValue: unknown = 'Hello';

      if (typeof unknownValue === 'string') {
        console.log(unknownValue.toUpperCase()); // Нет ошибки компиляции
}
    
  

3. Void

Тип void используется для функций, которые не возвращают значение.

Пример:

TypeScript
    
      function logMessage(message: string): void {
        console.log(message);
      }
    
  

4. Never

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

Пример:

TypeScript
    
      function throwError(message: string): never {
        throw new Error(message);
      }
    
  

Запустите Cypress:

Terminal
    
      npm test
    
  

Создайте тест в cypress/integration/example.spec.ts:

TypeScript
    
      describe('My First Test', () => {
        it('Visits the Kitchen Sink', () => {
          cy.visit('https://example.cypress.io');
          cy.contains('type').click();
          cy.url().should('include', '/commands/actions');
          cy.get('.action-email')
            .type('fake@email.com')
            .should('have.value', 'fake@email.com');
        });
      });
    
  

Cypress предоставляет мощные возможности для автоматизированного тестирования пользовательского интерфейса.

3
Задача
Модуль 2: Fullstack, 3 уровень, 8 лекция
Недоступна
Использование примитивных типов
Использование примитивных типов
3
Задача
Модуль 2: Fullstack, 3 уровень, 8 лекция
Недоступна
Массивы и кортежи
Массивы и кортежи
3
Задача
Модуль 2: Fullstack, 3 уровень, 8 лекция
Недоступна
Применение Union типов
Применение Union типов
3
Опрос
Настройка TypeScript, 3 уровень, 8 лекция
Недоступен
Настройка TypeScript
Настройка TypeScript
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Сергей Уровень 29
29 марта 2025
А при чём тут Cypress? O_o