Size: a a a

2020 March 04

EO

Eugene Obrezkov in Frontend UA
Тип T объявлен в классе, будет доступен внутри всего класса. Если мне нужно будет объявить тип Т в одном из методов. Будет ошибка? Возьмётся тот что в методе, классе?
источник

DB

Dima Bildin in Frontend UA
А, ну по-идее да. Но можно же другое название для типа использовать, чтоб не смешивалось
источник

EO

Eugene Obrezkov in Frontend UA
Ну вот не хотелось бы, надо попробовать будет
источник

EO

Eugene Obrezkov in Frontend UA
Может есть ещё запасные варианты?
источник

DB

Dima Bildin in Frontend UA
А чего не хотелось бы? Если это другой тип, то и назвать его по-другому. Ну как с переменными)
источник

EO

Eugene Obrezkov in Frontend UA
Да я привык уже к однобуквенным типам и Т это как имя по умолчанию)
источник

EO

Eugene Obrezkov in Frontend UA
И кстати конструктор Shape не должен generic принимать

Он принимает только то что он сам умеет принимать. Его наследники расширяют его и у них свой конструктор же
источник

AG

Andrey Gubanov in Frontend UA
Может кому-то надо: сделал либу для ветвления функций, которая работает и в браузере и в ноде. Либа - это улучшенная версия обычных инлайн воркеров (со всеми его недостатками), которая не требует прямых вызовов postMessage, вместо этого принимает аргументы, как для обычной функции https://github.com/finom/elegant-threading

const thread = require('elegant-threading');

const heavyCalculations = thread(function heavyCalculations(a, b, c) {
 // yep, console methods also work despite the fact that this is a Worker
 console.log('calculating a heavy thing');
 return calculateHeavyThing(a, b, c);
});

// main thread isn't blocked anymore
const result = await heavyCalculations(a, b, c);
источник

EO

Eugene Obrezkov in Frontend UA
Andrey Gubanov
Может кому-то надо: сделал либу для ветвления функций, которая работает и в браузере и в ноде. Либа - это улучшенная версия обычных инлайн воркеров (со всеми его недостатками), которая не требует прямых вызовов postMessage, вместо этого принимает аргументы, как для обычной функции https://github.com/finom/elegant-threading

const thread = require('elegant-threading');

const heavyCalculations = thread(function heavyCalculations(a, b, c) {
 // yep, console methods also work despite the fact that this is a Worker
 console.log('calculating a heavy thing');
 return calculateHeavyThing(a, b, c);
});

// main thread isn't blocked anymore
const result = await heavyCalculations(a, b, c);
👍
источник

EO

Eugene Obrezkov in Frontend UA
жаль только что все данные перемещаются посредством Copy
источник

AG

Andrey Gubanov in Frontend UA
Eugene Obrezkov
жаль только что все данные перемещаются посредством Copy
ну тут только Transferable (который пока не поддерживается) или SharedArrayBuffer можно было бы юзать, как и в обычном воркере
источник

EO

Eugene Obrezkov in Frontend UA
для SAB надо будет еще лепить локи, атомики - этого в жс нету ж
источник

Вт

Ві тя in Frontend UA
Eugene Obrezkov
toObject<T extends ShapeObject>(): T {
   return {
     type: this.constructor.name,
     options: {
       text: this._text,
       width: this._width,
       height: this._height,
       x: this._x,
       y: this._y,
       background: this._background,
       foreground: this._foreground
     }
   } as ShapeObject;
 }
А если в предпоследней строке заменить на Т? У тебя Т это класс, а шейпобжект интерфейс?
источник

EO

Eugene Obrezkov in Frontend UA
Ві тя
А если в предпоследней строке заменить на Т? У тебя Т это класс, а шейпобжект интерфейс?
Шейп объект это интерфейс, да
источник

EO

Eugene Obrezkov in Frontend UA
Ві тя
А если в предпоследней строке заменить на Т? У тебя Т это класс, а шейпобжект интерфейс?
вроде помогло
источник

EO

Eugene Obrezkov in Frontend UA
но я не пойму почему линтеру не нравится, что я не делаю x: T
источник

Вт

Ві тя in Frontend UA
я подозреваю что если делать as ShapeObject то это как последнее слово парсеру, типа вот так должно быть и даже не пытайся кастовать
источник

Вт

Ві тя in Frontend UA
бажина короче
источник

EO

Eugene Obrezkov in Frontend UA
источник

EO

Eugene Obrezkov in Frontend UA
вот так в итоге всё работает
источник