TypeScript миксины (mixins). Множественное наследование в TypeScript

preview_player
Показать описание
Code:

#ts #typescript
Рекомендации по теме
Комментарии
Автор

Расскажите пожалуйста про Promise и Awaited, у вас невероятно хорошо получается!

evilinarm
Автор

Спасибо за видео, действительно очень доходчиво и познавательно. Неясен только один момент - с передачей параметров. Если мне нужно не просто создать экземпляр класса, но и передать какие-то параметры - то тут не очень понятно как быть. Например, я хочу сделать класс Men и подмешать к нему пару других классов. Причем, параметры для конструктора одного из этих подмешиваемых классов я хочу принять опосредованно. То есть я передаю их при создании экземпляра класса Men, но присваиваются они как бы в том классе, которые возвращает функция Person. У меня получилась вот такая конструкция, и она работает, однако TS ругается на аргументы name и age, которые я передаю при создании экземпляра класса Men (самая последняя строка) . И это, в общем-то логично, ведь класс Men не ожидает никаких аргументов в конструкторе. Однако при этом код работает ровно так как надо, и эти переданные свойства присваиваются экземпляру. В общем-то главный вопрос - как сделать так, чтобы TS не ругался? Помимо // @ts-ignore))
type ClassConstructor<T = {}> = new (...args: any[]) => T;

const Person = <T extends ClassConstructor>(Base: T) => {
return class Person extends Base {
name: string = "";
age: number = 0;
constructor(...args: any[]) {
super(...args);
this.name = args[0];
this.age = args[1];
}
};
};

const Human = <T extends ClassConstructor>(Base: T) => {
return class Human extends Base {
kingdom = "Animalia";
family = "Hominidae";
genus = "Homo";
};
};

class Men extends Person(Human(class {})) {
sex: "male" = "male";

getMaleSpecs() {
return `${this.name} ${this.kingdom} ${this.sex}`;
}
}

const men = new Men("Michael", 45); // Error: Expected 0 arguments, but got 2

zhurow
Автор

Что за расширения которое дописывает код за вас и что за расширение которое показывало имя myFish ?

io
Автор

Доброго времени суток! Подскажите расширение, которое подставляет кусок кода серым? Например как на 1:05 constructor () {super() ;}

litvinoffguitar
Автор

how do you execute typescript directly in editor?

oleksandrterletskyi
Автор

1:41 а почему нельзя на 15 строке написать Dog | Fish??

romanryaboshtan
Автор

Для миксина классы Dog и Fish обязательно должны быть функциями?

Vladforever
Автор

Как называется тема которую ты используешь?

mpos