@norval_cronin
В TypeScript классы и интерфейсы используются для описания структур данных, а также для определения функционала объектов.
Описание класса:
1 2 3 4 5 6 7 8 9 10 11 12 |
class MyClass { private prop: string; constructor(prop: string) { this.prop = prop; } public getProp(): string { return this.prop; } public setProp(value: string) { this.prop = value; } } |
Описание интерфейса:
1 2 3 4 5 |
interface MyInterface { prop: string; getProp(): string; setProp(value: string): void; } |
Интерфейс определяет только сигнатуры методов, а класс описывает их реализацию. Класс может реализовывать несколько интерфейсов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
interface MyInterface1 { prop: string; getProp1(): string; setProp1(value: string): void; } interface MyInterface2 { getProp2(): string; } class MyClass implements MyInterface1, MyInterface2 { private prop: string; constructor(prop: string) { this.prop = prop; } public getProp1(): string { return this.prop; } public setProp1(value: string) { this.prop = value; } public getProp2(): string { return "Test"; } } |
Для создания объекта класса используется ключевое слово new
:
1 2 3 4 |
const myObject = new MyClass("Hello"); console.log(myObject.getProp()); // выведет "Hello" myObject.setProp("World"); console.log(myObject.getProp()); // выведет "World" |
Интерфейсы могут использоваться для описания типов параметров функций и переменных:
1 2 3 4 5 6 |
function createObject(obj: MyInterface) { console.log(obj.getProp()); } const myObject: MyInterface = new MyClass("Test"); createObject(myObject); // выведет "Test" |