DaySchedule = Array<Interval>;
так переменную:
const day : DaySchedule = [];
и где-нибудь потом хочу сделать так:
day.metod()
можно конечно сделать объект, но прелесть js-методов в их скрытости. если ты о них не знаешь, это не влияет на работу.
а в объекте надо явно вызывать DaySchedule.intervals (для обращения к самому массиву) что неудобно.
а если делать класс-потомок Array, то всякие filter и concat возвращают обычный массив а не экземпляр класса. и как следствие не имеют у себя нужного метода.
можете подсказать как мне объявить тип с методом, или класс, так чтобы методы предка возвращали потомка?
расширять дефолтные типы в мире жс - плохая практика
короче решение: class DaySchedule extends Array{ constructor(array?: Array) { if (array) super(...array) else super(); this.FixDaySchedule = function(){ this[0]='asd'; return 'FixDaySchedule'}; }; FixDaySchedule: ()=>string; }; const arr = new DaySchedule(); arr.push('1'); arr.push('8'); arr.push('3'); arr.push('0'); arr.push('5'); arr.push('6'); arr.sort(); console.log(arr.FixDaySchedule()); console.log(arr);
Обсуждают сегодня