Artem
именно так и надо делать, да
Дима
Каждый раз выполнять лишнюю работу?
Artem
если не упоминается, то нельзя просто на это рассчитывать по умолчанию
Artem
нет, упоминать в документауции
Дима
Ну так упомяни
Дима
Не вижу проблемы
Дима
Минус перфоманса ради унификации (мнимой)?
Andrey
У тебя в классе по определению все методы должны использовать this как обращение к экземпляру объекта. Перебайндивать просто потому что там удобный метод - следствие плохой архитектуры
Artem
так и я не вижу. Просто по умолчанию нельзя рассчитывать что метод объявлен стрелочной функциеей, если это явно не прописано в описании контракта (например, в доке)
Дима
Если тебе это так важно, то можешь сделать упоминание в jsDoc метода
Дима
Ну так упомяни
Дима
Не вижу проблемы
Andrey
А, тут проблемой считается неочевидность прибайнденого метода...
Artem
неочевидность того, как определён метод. JS, к сожалению, не позволяет явно это указать
Dreamerinnoise
Я тут бы опять хотел заехать с Тайпскриптом
Artem
сделали бы декларацию методов через классы аналогом стрелочных функций - было бы отлично
Dreamerinnoise
и сказать, что обычно стрелочные хендлеры у меня приватные
Dreamerinnoise
Но да ладно
Dreamerinnoise
Artem
Тебе показалось.
а в какой версии ES это появилось?
Artem
это вроде flow syntax, а не ES
Дима
Я тут бы опять хотел заехать с Тайпскриптом
Ну у парня серьезная проблема — доку нельзя сделать, ето тайпскриптом не решить((
Anonymous
а в какой версии ES это появилось?
Это появилось в доках реакта как экспериментальная возможность с помощью плагина. По поводу стандартов - фз. Может и будет в будущем.
Dreamerinnoise
https://tc39.github.io/proposal-class-public-fields/ Погуглил за вас
Dreamerinnoise
Только он уже стейдж 2
Artem
Ну у парня серьезная проблема — доку нельзя сделать, ето тайпскриптом не решить((
что-то ты не понимаешь про что я говорю. Я топлю за явное описание подобных штук в контракте, к сожалению, в JS это нельзя сделать средствами языка, поэтому приходится использовать документацию. Я против изменения дефолтов в проекте, когда все методы дефайнятся стрелочными функциями и в доке про это нигде не указано потому что "и так понятно"
Artem
ну и норм
Sergey
Чем неправильно?
тем, что стрелочная как метод, то это не объявление метода, а присваивание функции свойству класса
Дима
И, вдогонку, чем это идеологически отличается от бинда в конструкторе?)
Sergey
ты описываешь метод, а не проперти
Дима
Да, я описваю метод
Nikolay
Чисто теоретически разницы вообще никакой )
Sergey
методы попадают в prototype напрямую
Sergey
бабель по разному компилит
Sergey
Дима
методы попадают в prototype напрямую
чем это идеологически отличается от бинда в конструкторе?
Sergey
чем это идеологически отличается от бинда в конструкторе?
тем, что ты биндишь метод, а не создаешь свойство с функцией
Дима
Ну вообще при бинде ты именно что перезаписываешь свойство какой то функцией
Дима
По совпадению, той же самой
Дима
К тому же, ничто не мешает подправить реализацию чтобы объявлять реальный метод инстанса и биндить
Дима
Просто это никому не требуется)
Sergey
а вот и разница подъехала
Sergey
Дима
И что
Sergey
ты говорил разницы нет
Дима
Забинженной функции там нету абсолютно так же
Sergey
но метод есть же
Дима
Ты абсолютно так же создаёшь функцию каждому экземпляру
Дима
А такая же функция в прототипе только вводит в заблуждение, потому что отличается в механизме работы
Sergey
вводит в заблуждение...
Sergey
ага...
Sergey
только ты смотришь в прототип и не видишь prop
Дима
И?
Sergey
и понимаешь что это Свойство
Дима
Опасно в js что то понимать за рантайм)
Sergey
если код не очевиден это плохой код
Sergey
сам знаешь
Дима
Да
Дима
Поэтому я использую самую синтаксически чистую конструкцию
Sergey
но идеологически у тебя методов в коде нет
Дима
Идеологически он есть
Дима
Причём intellisense со мной согласен
Дима
Пример выше - не фотошоп, как бы
Дима
👆
Sergey
только написано property как бэ
Nikolay
про что беседа господа?
Дима
Про глупый intellisense и опасности выводов по прототипам классов)
Artem
про что беседа господа?
беседа про выбор костылей для обхода некоторых спорных моментов JS
Sergey
Дима
Вау!
Sergey
разницу даже интеллисенс видит)))
Дима
Даже не обращал внимания на то, что на скрине есть эта строчка, там же сигнатура вызова дана
Sergey
до кучи
Дима
Окей, это не м е т о д, надеюсь, я смогу с этим жить 😢