
Aleh
08.06.2017
08:14:47
Вот бы их еще ts проверять научился

Олег
08.06.2017
08:18:56

Aleh
08.06.2017
08:20:17
(нет)
Тогда не было бы абстрактных классов)

Google

Олег
08.06.2017
08:21:08
То сообщение было в контексте интерфейса)

Сергей
08.06.2017
08:21:44
выпал

Aleh
08.06.2017
08:30:42
другими словами, чего именно ты хочешь от трейтов в es?

Сергей
08.06.2017
08:31:36

Aleh
08.06.2017
08:31:45
)

Сергей
08.06.2017
08:48:58
https://medium.com/the-thinkmill/javascripts-new-private-class-fields-93106e37647a

Aleh
08.06.2017
08:53:36
там ж ничего нового вроде, не?

Сергей
08.06.2017
08:53:53
Объяснение "почему хэш"

Aleh
08.06.2017
08:56:09
но мне честно говоря непонятно, чего хотят от private fields в рантайме(

Google

Aleh
08.06.2017
09:05:23
вот тут что-то есть, но я не осилил https://github.com/zenparsing/es-abstract-refs/issues/11#issuecomment-65723350

Дмитрий
08.06.2017
09:06:02
Символы — не вариант

Aleh
08.06.2017
09:06:21

Сергей
08.06.2017
09:07:09

Дмитрий
08.06.2017
09:07:28
сложи их в weak map
Это довольно костыльный путь, нужно понимать, что WeakMap не для приватных свойств делался)

Aleh
08.06.2017
09:08:03

Дмитрий
08.06.2017
09:08:20
Нет

Aleh
08.06.2017
09:08:25
ну ладно

Дмитрий
08.06.2017
09:08:45
Ты приватные методы тоже в weak map сложишь?)
И каждый раз map дергать — это довольно накладно
И неудобно

Юрий
08.06.2017
09:11:01

Aleh
08.06.2017
09:11:03

Дмитрий
08.06.2017
09:12:01

Aleh
08.06.2017
09:12:13

Юрий
08.06.2017
09:12:29

Сергей
08.06.2017
09:12:50

Aleh
08.06.2017
09:12:52
Есть софт прайвит с помощью тайпчекеров и есть хард прайвит с помощью замыканий и мапов/объектов

Google

Дмитрий
08.06.2017
09:13:28
Замыкания — пожароопасный способ)

Aleh
08.06.2017
09:13:32
И будет еще один, нужно больше приватности)

Сергей
08.06.2017
09:13:35

Дмитрий
08.06.2017
09:13:39
Знаешь как память может внезапно утечь?)

Юрий
08.06.2017
09:14:00

Сергей
08.06.2017
09:14:13

Дмитрий
08.06.2017
09:14:46

Aleh
08.06.2017
09:15:11
Но с private все понятно

Сергей
08.06.2017
09:15:52

Юрий
08.06.2017
09:15:55
@ да ну?
... да ну?
=> да ну?
Ни один из примеров не ощущается как _часть имени переменной_, а ощущается как отдельная конструкция. В этом ключевая разница

Aleh
08.06.2017
09:16:01
Накладные расходы на поиск, непонятное поведение

Aleh
08.06.2017
09:16:05
И все такое

Дмитрий
08.06.2017
09:16:19
Не обязательно сразу расстреливать весь запас ключевиков в первую пятилетку нормального развития языка)

Aleh
08.06.2017
09:16:37

Дмитрий
08.06.2017
09:16:47

Aleh
08.06.2017
09:17:37
Так а какие кейсы, когда нужен вот такой прайвит? Кому-то кроме гугла такие кейсы приходили?
Ну чем soft private у ts/flow не устраивает?

Сергей
08.06.2017
09:18:12

Google

Aleh
08.06.2017
09:18:29

Сергей
08.06.2017
09:18:36
тем что не все юзают ts/flow

Aleh
08.06.2017
09:21:48
Щас бы еще структурную проверку типов в рантайме для всего проекта

Дмитрий
08.06.2017
09:26:34
Кстати для того, чтобы представить себе как взвешенно делают решения в tc39 почитайте главу про обсуждение судьбы SIMD https://github.com/rwaldron/tc39-notes/blob/a66df6740eec3358d5e24f81817db99d6ee41401/es8/2017-03/mar-21.md#10if-simdjs-status-update

Ostap
08.06.2017
09:29:23

Дмитрий
08.06.2017
09:29:41
Вкратце, пропосал, который уверенно шёл к релизу и уже был на стадии stage 3, внезапно оказался никому не нужен из-за wasm, вендоры движков не хотят его имплементить вообще и теперь нужно как-то объяснить сообществу прецедент, когда proposal внезапно завернули уже почти с финальной стадии

andretshurotshka?❄️кде
08.06.2017
09:35:15
лол

Dmitry
08.06.2017
19:26:42
ребза
есть проблемка

Admin
ERROR: S client not available

Aleh
08.06.2017
19:27:47
давай

Dmitry
08.06.2017
19:28:40
импорчу класс в другом классе и в конструкторе присваиваю локальной проперте аля
import { Validator } from '../../middlewares/validate';
export class MyClass {
private validator: Validator;
constructor() {
this.validator = new Validator();
}
myMethod() {
this.validator.do();
}
}
потом в методе каком-нить вызываю и не находит validator этот
что я делаю не так
?

Mike
08.06.2017
19:29:18
пробел после точки?
что значит не находит, рантайм ошибка или подсказчик не показывает?

Dmitry
08.06.2017
19:30:05
не это тут опечатка
кароче нихуя не работает это
не знаю почему

Google

Mike
08.06.2017
19:30:43
как не работает?
что пишет
ты только учишься программировать или как?
скопируй минимальный пример сюда http://www.typescriptlang.org/play/index.html
текст ошибки вконце концов скопируй

Dmitry
08.06.2017
19:42:25
весь парадокс в том
что в плейграундах все работает
возможно я не так импорчу классы
import { Validator } from './validator';
в самом классе Validator у меня просто
export class Validator { // bla bla bla }

Mike
08.06.2017
19:44:01
телепаты в отпуске. Пока не напишешь текст ошибки тебе никто не сможет помочь

Dmitry
08.06.2017
19:44:20
Cannot read property 'validator' of undefined

Mike
08.06.2017
19:44:45
так это рантайм ошибка
т.е. всё скомпилилось
а ты myMethod как вызываешь?
ты его не передаёшь случайно куда нибудь?

Dmitry
08.06.2017
19:46:35
я результат выполнения метода присваиваю переменной
const data = this.validator.do();
парадокс в том, что если я в методе (где хочу использовать валидатор) создаю инстанс валидатора, то работает нормально, но если у меня в конструкторе класса создается - то все, не работает

Mike
08.06.2017
19:49:06
нет, я про тот метод где у тебя код const data = this.validator.do(); написан
он как вызывается?
напиши сюда строку где ты этот метод используешь

Dmitry
08.06.2017
19:49:27
myMethod() из примера выше
там это происходит