В этом руководстве вы узнаете о классах в TypeScript. В JavaScript нет понятия класса, как в других языках программирования, таких как Java и C#. В ES5 вы можете использовать функцию-конструктор и наследование прототипа для создания «класса».
Например, чтобы создать класс Person, который имеет три свойства: ssn, first name и last name, вы используете следующую функцию-конструктор:
function Person(ssn, firstName, lastName) {
this.ssn = ssn;
this.firstName = firstName;
this.lastName = lastName;
}Затем вы можете определить метод прототипа для получения полного имени человека путем объединения имени и фамилии следующим образом:
Person.prototype.getFullName = function() {
return `${this.firstName} ${this.lastName}`;
}Затем вы можете использовать «класс» Person, создав новый объект:
let person = new Person('171-28-0926','John','Doe');
console.log(person.getFullName());В консоль будет выведено следующее:
John Doe
ES6 позволяет вам определить класс, который является просто синтаксическим сахаром для создания функции-конструктора и прототипного наследования:
class Person {
ssn;
firstName;
lastName;
constructor(ssn, firstName, lastName) {
this.ssn = ssn;
this.firstName = firstName;
this.lastName = lastName;
}
}В синтаксисе класса конструктор четко определен и помещен внутри класса. Следующий пример добавляет метод getFullName() :
class Person {
ssn;
firstName;
lastName;
constructor(ssn, firstName, lastName) {
this.ssn = ssn;
this.firstName = firstName;
this.lastName = lastName;
}
getFullName() {
return `${this.firstName} ${this.lastName}`;
}
}Использование класса Person аналогично функции-конструктору Person :
let person = new Person('171-28-0926','John','Doe');
console.log(person.getFullName());Класс TypeScript добавляет аннотации типов к свойствам и методам класса. Ниже показан класс Person в TypeScript:
class Person {
ssn: string;
firstName: string;
lastName: string;
constructor(ssn: string, firstName: string, lastName: string) {
this.ssn = ssn;
this.firstName = firstName;
this.lastName = lastName;
}
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}Когда вы аннотируете типы к свойствам, конструктору и методу, компилятор TypeScript будет выполнять соответствующие проверки типов.
Например, вы не можете инициализировать ssn с помощью number. Следующий код приведет к ошибке:
let person = new Person(171280926, 'John', 'Doe');
- Используйте ключевое слово
classдля определения класса в TypeScript. - TypeScript использует синтаксис класса ES6 и добавляет аннотации типов, чтобы сделать класс более надежным.
