@typescript_ru

Страница 249 из 669
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
другими словами, чего именно ты хочешь от трейтов в es?
Интерфейс методов и дефолтную реализацию

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
Объяснение "почему хэш"
https://github.com/tc39/proposal-private-fields/issues/14#issuecomment-153050837

но мне честно говоря непонятно, чего хотят от 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
но мне честно говоря непонятно, чего хотят от private fields в рантайме(
Ну вот есть у объекта какие-то чисто внутренние поля стейта, бесполезные для внешнего наблюдателя и будут только мешаться при просмотре свойств объекта

Символы — не вариант

Сергей
08.06.2017
09:07:09
сложи их в weak map
наверное бабель и будет так полифилить

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

Aleh
08.06.2017
09:08:03
Это довольно костыльный путь, нужно понимать, что WeakMap не для приватных свойств делался)
ну, приватные поля с хештегами тоже довольно костыльный путь, возможно даже еще более

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

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

Дмитрий
08.06.2017
09:08:45
Ты приватные методы тоже в weak map сложишь?)

И каждый раз map дергать — это довольно накладно

И неудобно

ну, приватные поля с хештегами тоже довольно костыльный путь, возможно даже еще более
Обычное обозначение приватных полей, что private, что #, не вижу разницы)

Юрий
08.06.2017
09:11:01
Обычное обозначение приватных полей, что private, что #, не вижу разницы)
Читаемость кода резко просядет. Если ты не знаешь о том, что # значит, то ты самостоятельно не догадаешься.

Aleh
08.06.2017
09:11:03
Дмитрий
08.06.2017
09:12:01
Читаемость кода резко просядет. Если ты не знаешь о том, что # значит, то ты самостоятельно не догадаешься.
То есть мы не должны вводить новые конструкции, потому что их не знают?)) Рекурсия

Aleh
08.06.2017
09:12:13
Обычное обозначение приватных полей, что private, что #, не вижу разницы)
Про обозначение пофигу, зачем это в рантайме неясно(

Сергей
08.06.2017
09:12:50
Читаемость кода резко просядет. Если ты не знаешь о том, что # значит, то ты самостоятельно не догадаешься.
такое себе обоснование люди не догадываются о существовании WeakMap и что это плохо и не нужно?

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
private x читается естественным образом
а теперь добавь тонну проверок о том, какого типа переменная пришла в метод и какую проперти надо вытащить и одинаковые ли классы

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

Юрий
08.06.2017
09:14:00
такое себе обоснование люди не догадываются о существовании WeakMap и что это плохо и не нужно?
Если можно сделать проще и читаемее - то надо так и сделать. Изменение семантики поведение из-за магического символа в названии переменной - это не круто

Дмитрий
08.06.2017
09:14:46
private x читается естественным образом
Разработчики языка хотят вводить как можно меньше новых ключевых слов, и я их тут поддерживаю

Сергей
08.06.2017
09:15:52
Но с private все понятно
суть не в ключевом слове, а в инфере типа проперти

Юрий
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:17:37
Так а какие кейсы, когда нужен вот такой прайвит? Кому-то кроме гугла такие кейсы приходили?

Ну чем soft private у ts/flow не устраивает?

Google
Aleh
08.06.2017
09:18:29
те же кейсы, когда ты в ts пишешь private
Так зачем мне эта лабуда в рантайме?

Сергей
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() из примера выше

там это происходит

Страница 249 из 669