TypeScript object: тип объекта

В этом руководстве вы узнаете о типе данных TypeScript object и о том, как писать точные объявления типа object.

Введение в тип объекта TypeScript

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

Ниже приведены примитивные типы в TypeScript:

  • number
  • bigint
  • string
  • boolean
  • null
  • undefined
  • symbol

Ниже показано, как объявить переменную, содержащую объект:

let employee: object;

employee = {
    firstName: 'John',
    lastName: 'Doe',
    age: 25,
    jobTitle: 'Web Developer'
};

console.log(employee);

Выход:

{
  firstName: 'John',       
  lastName: 'Doe',
  age: 25,
  jobTitle: 'Web Developer'
}

Если вы переназначите примитивное значение employee, вы получите сообщение об ошибке:

employee = "Jane";

Ошибка:

error TS2322: Type '"Jane"' is not assignable to type 'object'.

Объект employee является типом object с фиксированным списком свойств. Если вы попытаетесь получить доступ к свойству, которого нет в employee, вы получите сообщение об ошибке:

console.log(employee.hireDate);

Ошибка:

error TS2339: Property 'hireDate' does not exist on type 'object'.

Обратите внимание, что приведенный выше оператор отлично работает в JavaScript и вместо этого возвращает undefined.

Чтобы явно указать свойства объекта employee, вы сначала используете следующий синтаксис для объявления объекта employee :

let employee: {
    firstName: string;
    lastName: string;
    age: number;
    jobTitle: string;
};

А затем вы назначаете объект employee буквальному объекту с описанными свойствами:

employee = {
    firstName: 'John',
    lastName: 'Doe',
    age: 25,
    jobTitle: 'Web Developer'
};

Или вы можете объединить оба синтаксиса в одном выражении, например:

let employee: {
    firstName: string;
    lastName: string;
    age: number;
    jobTitle: string;
} = {
    firstName: 'John',
    lastName: 'Doe',
    age: 25,
    jobTitle: 'Web Developer'
};

object или Object

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

Тип object представляет все не примитивные значения, а тип Object описывает функциональность всех объектов.

Например, тип Object имеет toString() и valueOf(), которые могут быть доступны любому объекту.

Тип empty {}

TypeScript имеет другой тип, называемый пустым типом, обозначаемый {}, который очень похож на тип object. empty{} описывает объект, который не имеет собственного свойства. Если вы попытаетесь получить доступ к свойству такого объекта, TypeScript выдаст ошибку времени компиляции:

let vacant: {};
vacant.firstName = 'John';

Ошибка:

error TS2339: Property 'firstName' does not exist on type '{}'.

Но вы можете получить доступ ко всем свойствам и методам, объявленным для типа Object, которые доступны для объекта через цепочку прототипов:

let vacant: {} = {};

console.log(vacant.toString());

Выход:

[object Object]

Заключение

  • Тип TypeScript object представляет любое значение, не являющееся примитивным значением.
  • Однако тип Object описывает функциональность, доступную для всех объектов.
  • Тип empty{} относится к объекту, который не имеет собственного свойства.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript