В этом руководстве вы узнаете о типе данных TypeScript object и о том, как писать точные объявления типа object.
Введение в тип объекта TypeScript
Тип TypeScript object представляет все значения, не относящиеся к примитивным типам.
Ниже приведены примитивные типы в TypeScript:
numberbigintstringbooleannullundefinedsymbol
Ниже показано, как объявить переменную, содержащую объект:
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
{}относится к объекту, который не имеет собственного свойства.
