Sobes.tech
Junior
105
questionbank

Какие типы данных поддерживаются в TypeScript?

Ответ от нейросети

sobes.tech AI

TypeScript поддерживает следующие типы данных:

  • Примитивные типы:

    • boolean: логический тип (true/false).
    • number: числа (целые и с плавающей точкой).
    • string: строковые значения.
    • null: специальный литерал, обозначающий отсутствие значения.
    • undefined: значение, которое присваивается переменным, которым не было присвоено значение явно.
    • symbol: уникальный неизменяемый примитивный тип, используемый в качестве ключей свойств объекта.
    • bigint: целые числа произвольной точности.
  • Типы объектов:

    • object: не примитивный тип, т.е. все что не является одним из примитивных типов.
    • Массивы: Array<T> или T[], где T — тип элементов массива.
    • Кортежи (Tuples): фиксированное количество элементов с возможно разными типами, например [string, number].
  • Дополнительные типы:

    • any: тип, который может принимать любое значение. Используется, когда тип неизвестен или может меняться. Следует использовать с осторожностью.
    • unknown: более безопасная альтернатива any. Значение с типом unknown нельзя использовать напрямую, его нужно сначала сузить до более конкретного типа.
    • void: используется для функций, которые не возвращают никакого значения.
    • never: тип, который представляет значения, которые никогда не произойдут. Используется для функций, которые выбрасывают исключение или содержат бесконечный цикл.
    • enum: перечисления, позволяют задать именованные константные значения.
    enum Color {
      Red,
      Green,
      Blue,
    }
    let c: Color = Color.Green;
    
    • tuple: позволяет выразить массив с фиксированным количеством элементов, типы которых известны, но не обязательно совпадают.
    let x: [string, number];
    x = ["hello", 10];
    // x = [10, "hello"]; // Error
    
    • union: объединение типов с помощью оператора |. Переменная может иметь любой из перечисленных типов.
    let myVariable: string | number;
    myVariable = "hello";
    myVariable = 123;
    
    • intersection: пересечение типов с помощью оператора &. Новый тип содержит свойства всех пересекающихся типов.
    interface A {
      propA: string;
    }
    
    interface B {
      propB: number;
    }
    
    type C = A & B;
    
    let myObject: C = { propA: "test", propB: 42 };
    
    • literal: позволяют указать точные значения, которые может принимать переменная.
    type Direction = "up" | "down" | "left" | "right";
    let move: Direction = "up";
    
    • alias: синонимы для существующих типов.
    type MyString = string;
    let greeting: MyString = "Hello";
    
    • interface: структуры, определяющие контракт для объектов.
    interface Point {
      x: number;
      y: number;
    }
    
    function printPoint(pt: Point) {
      console.log(`(${pt.x}, ${pt.y})`);
    }
    
    • class: определения классов в соответствии со стандартами ECMAScript.
    class Greeter {
      greeting: string;
    
      constructor(message: string) {
        this.greeting = message;
      }
    
      greet() {
        return "Hello, " + this.greeting;
      }
    }