Quiet
И пишешь типы на каждый чих?)
как в строготипизированных языках
Anonymous
т.е. include: undefined === valid?!
let fn = a => console.log(a); fn(); // undefined
Quiet
let fn = a => console.log(a); fn(); // undefined
знаю. Вопрос в том, что вебпак не пишет ошибку.
Anonymous
как в строготипизированных языках
в интерфейсах только, ну а каких то местах где неявный код (аля Object.definePropery(this, 'myprop' + 3) ...);
Anonymous
знаю. Вопрос в том, что вебпак не пишет ошибку.
ну эму значит пофиг просто на это, будто вы и не писали вообще include, тут вообще проблеммы нет.
Андрей
как в строготипизированных языках
Ага, только эта модель не работает у ts
Андрей
http://www.typescriptlang.org/play/index.html#src=class%20Animal%20%7B%20%7D%0D%0Aclass%20Cat%20extends%20Animal%20%7B%0D%0A%20%20%20%20meow()%20%7B%0D%0A%20%20%20%20%20%20%20%20console.log(%22meow%22)%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0Aclass%20Dog%20extends%20Animal%20%7B%0D%0A%20%20%20%20bark()%20%7B%0D%0A%20%20%20%20%20%20%20%20console.log(%22bark%22)%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A%0D%0Aconst%20cats%3A%20Cat%5B%5D%20%3D%20%5Bnew%20Cat()%2C%20new%20Cat()%5D%0D%0Aconst%20animals%3A%20Animal%5B%5D%20%3D%20cats%0D%0Aanimals.push(new%20Dog())%0D%0A%0D%0Acats.forEach(c%20%3D%3E%20c.meow())
Андрей
Вот пример когда ts говорит, что неправильный код правильный.
Андрей
А flow в этом же коде находит ошибку. Потому что она там есть.
Андрей
https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoVBjGBDAzrsAQQDsBLAW2xjAG8wBfTHfMAYWwBcwBTADw+7EAJgRIUqtVGGlhy3RAAoAlJJlqwGOMVxwY3AHTwA5goBEcxKaVSZjRljwEAInCM9+gkUTKVqNG9IARtgATgDWyqrq0praugbGZsHhVgEMqIyYWrhcGJy4AFxsnADaALpgALxgJcTcSOwcygA0YHUNnMplWdpc2D5Uhd7iMOVVGvmo-SO4+gAOAK64ABYK7WAuJkrWmPn6UHAhAKLYGKsYVQB8GvoWCMpKQA
Андрей
У flow есть, конечно же, минусы. Но не по части типов.
Андрей
И говорить, что выбирать TS нужно, потому что "затем", показывает, что вы не особо разбираетесь в теме.
Андрей
Прошу прощения, что ответил не тому.
Андрей
Андрей
Если ты запустишь этот код, то тебе браузер это и скажет.
Aleserche
Сейчас такие собаки, что не удивлюсь
Marat
такой вопрос по редутцу - столкнулся с вот таким (чекбокс) почему-то все сразу меняются) видимо из за общего для всех компонетов хранилища. Подскажие
Андрей
Верно, я об этом и говорю.
Quiet
Вот пример когда ts говорит, что неправильный код правильный.
так он и не говорит, что код не правильный, а пишет ошибку в консоль при выполнении (плагин для вебпака наверняка в консоль сообщит) Вопрос в том, что для чего нужен ts, ведь код то все равно компилится в ваниль.
Aleserche
Т.е. транспилер должен был не пропустить такой код
Aleserche
Да, нехорошо получилось
Алексей
Ребят, кто помнит, как в гугловской карте bounds перевести в x и y?
Андрей
Не понял.
Anonymous
Это рантайм ошибка. От чего и должен защищать ts, но не защищает.
Во первых очень большое заблуждение что ts вас защитит от всего. Во вторых вы сами ломаете код, когда пишите тип animals явно, typescript в этом случае позволяет вам сделать глупость, причины должны быть вам очевидно почему так можно сделать; ответ: для того что бы заставить работать ваш код на ts, с другим кодом js, с очень запутанным и магическим кодом, и этого говна в open-source огромные горы, а работать надо, собственно именно из-за этого на нем пишет больше людей. В третьих возможно это выключается флагом, я поищу и если найду напишу. const animals: Animal[] = cats; // уберите тип и все заработает.
Андрей
Какой смысл от статического анализа, если его может кто-то сломать?
Anonymous
Я могу быть уверенным, что в чужом коде не будет этого?
вы вообще не можете быть уверены ни в чем. чужой код может как бы всегда возвращать массив строк по описанию интерфейса, а завтра херак и undefined будет.
Anonymous
Какой смысл от статического анализа, если его может кто-то сломать?
Бля чувак, я уверен на 100% flow тоже есть тысячи способов сломать, это ну помоему должно быть ну всем понятно в этом мире js.
Андрей
Бля чувак, я уверен на 100% flow тоже есть тысячи способов сломать, это ну помоему должно быть ну всем понятно в этом мире js.
Я пока не видел ни одного. И не думаю, что он там есть, потому что знаю как он выводит типы.
Anonymous
Я пока не видел ни одного. И не думаю, что он там есть, потому что знаю как он выводит типы.
а если я prototype поменяю? или определю метод объекта через defineProperty?
Daniil
Daniil
Ребят, а разве admin не является ссылкой на user?
Daniil
Почему admin тоже не становится null
Андрей
Он ссылается на тот же объект, что и user
Daniil
Понял, спасибо
Baur
Baur A: Baur A: Кто нибудь посещал академию шаг?
Anonymous
Не проверял. Надо глянуть.
ну... как бы ошибка там где её нет https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoVBjGBDAzrsAQQDsBLAW2xjAG8wBfTHfMAYWwBcwBTADw+7EAJgRIUqtVGGlhy3RAAoAlJJlqwGOMVxwY3AHTwA5goBEcxKaVSZjRpi24uGTrgBcbTgG0AumAC8YF7E3EjsHMoANGAhYZzKPuh6XNgBnhz6AA4ATnAceQCemQYWCADcqOFZufkcRSXySIHYFZiu+lBw2QCi2BgAFgoYAQB8GvqlykpAA
Андрей
Пусть будут ложные ошибки, чем отсутствие их, когда ошибки есть.
Anonymous
Но это лучше, чем наоборот, верно?)
Взять и что-то запретить только потому что дальше он сам сломается? Хорошее решение... это сарказм?
Anonymous
Что сломается?
То что в коде выше будет один тип, а ниже другой видимо, че ему иначе запрещать то.
Anonymous
Или ещё не дописали
Андрей
То что в коде выше будет один тип, а ниже другой видимо, че ему иначе запрещать то.
Один инструмент пропускает плохой код, а другой не пропускает и плохой, и некоторые варианты хорошего.
Андрей
Я выберу второй.
Андрей
Потому что мне нужно отсекать именно плохой код.
Anonymous
Один инструмент пропускает плохой код, а другой не пропускает и плохой, и некоторые варианты хорошего.
Блять мне нужно изменить чертов метод в рантайме, какого хера я не могу это сделать, вы что там сума все посходили.
Андрей
Блять мне нужно изменить чертов метод в рантайме, какого хера я не могу это сделать, вы что там сума все посходили.
Если честно, то я бы послал бы переписывать такой код программиста, который это написал.
Андрей
Поэтому конкретно в вашем примере я не вижу ничего плохого.
Anonymous
Если честно, то я бы послал бы переписывать такой код программиста, который это написал.
Это все какое то джуниорство епта, какого хера я не могу сделать обычное присваивание совместимого типа, че ты тут за чушь пишешь что все бля в порядке, ты дурак что ли?
Konstantin
шо разорались
Андрей
Хорошо. Советую все же держать себя в руках.
Андрей
Ок, вы предпочитаете пропускать ошибки в рантайм, я предпочитаю отказаться от некоторых валидных конструкций js. На этом и закончим.
Anonymous
Вы называете это обычным присваиванием?
Я не знаю что вы там делаете, может числа скадываете, и строки выводите, но свойство цепочки прототипов для поиска свойств используется достаточно часто
Anonymous
Вы переопределяете прототип подобным образом?
Ну да, да да! Я делаю это когда мне это нужно, пиздец.
Андрей
Можете описать ситуацию, когда вы часто так делаете с прототипом.
Anonymous
Можете описать ситуацию, когда вы часто так делаете с прототипом.
Ты бы мне лучше объяснил хули это flow обосрался на примере что я придумал из головы за 5 минут.
Anonymous
Ты бы мне лучше объяснил хули это flow обосрался на примере что я придумал из головы за 5 минут.
И как он будет выводить типы из сторонных либ где возможно такой код будет.
Андрей
И как он будет выводить типы из сторонных либ где возможно такой код будет.
flow выводит тип из твоего кода. С либами он работает в подавляющем случае так же как и ts.
Anonymous
то есть блять flow не обосрался?
Андрей
Думаю, что дело в https://flow.org/en/docs/lang/nominal-structural/
Дима
Настоятельно рекомендую воздержаться от употребления обесцененной лексики уровня девятого "Б"
Ivan
Думаю какое бы кино глянуть в этот нечем непримечательный вечер
Anonymous
Думаю, что дело в https://flow.org/en/docs/lang/nominal-structural/
Чувак я пишу на js! Не нужен мне ваш ООП.
Андрей
Дима
Методы переписывать нельзя, так как они read only и не без оснований
Дима
Можно переписывать проперти
Дима
Но спорить с господином выше чет вообще желания не возникло, пусть хоть на бейсике пишет
Anonymous
Ну дак это другой язык, в обычном языке можно куда больше получается