и слава богу
Кому?!
"богу"
я так понимаю, ЖС приводит стринг к инт, в то время как питон не приводит, что более логично так как нахуй приводить к цифрам то что специально обведено скобами как строка
Это разница между слабой и сильной типизацией - жс и путон соответственно.
У слабой типизации есть свои плюсы, но они настолько мизерные, что многие перекатываются вообще на тс.
У слабой типизации есть свои плюсы, но они настолько мизерные, что многие перекатываются вообще на тс.
Плюсы слабой типизации: плюс ошибки
Минусы слабой типизации: минус время, которое будет потрачено на поиск этих ошибок
Минусы слабой типизации: минус время, которое будет потрачено на поиск этих ошибок
Приводит только в случае "-".
В случае "+" операция соединения строк имеет больший приоритет, чем оператор сложения.
Поэтому '3'+'1' = '31'
А '3'-'1'=2.
Люблю когда все интуитивно понятно.
В случае "+" операция соединения строк имеет больший приоритет, чем оператор сложения.
Поэтому '3'+'1' = '31'
А '3'-'1'=2.
Люблю когда все интуитивно понятно.
Это пиздец
Не в приоритете дело, а в перегрузке операторов. Для оператора "+" есть реализация для str, которая делает конкатенацию операндов. Для "-" такой нет, из-за чего выполняется неявное преобразование типов, что бы подогнать выражение под существующий прототип. первым попадется int+int.
Питон неявного преобразования не делает и выдает ошибку что оператор для этого типа не определён.
Питон неявного преобразования не делает и выдает ошибку что оператор для этого типа не определён.
Сори, я не уточнил, что говорил именно про js в своем комментарии.
это интуитивно-понятное приводит к трудноотслеживаемым и трудноотлаживаемым проблемам.
куда лучше строгие типы, которые приведут к ошибке еще на этапе компиляции
куда лучше строгие типы, которые приведут к ошибке еще на этапе компиляции
Гвидо
Traceback вместо нормально ошибки до запуска...
Динамическая типизация + интерпретатор, тут только mypy'ем можно будет проверить.
Люди, подскажите. Как освоить JS и не ёбнуться при этом? Думалка подпорчена всякими Паскалями СиШарпами. (всё на уровне любителя)
А какие с ним проблемы?
Хз как пояснить. Я давно несколько раз пытался к нему подойти по надобности. И если в тот же СиШарп буквально вливался за недельку с нуля (исключительно для небольших своих задач, типо обработать пару простеньких database). код пишется легко, операторы, функции, синтаксис - запоминаются на раз-два. То в js, столько не пробовал, плевал на все дело в итоге, и просто собирал по кусочкам готового кода из инета своего франкеншейна, и с радостью хоронил, когда находилось решение более простое для моего скудного ума.
Повторюсь - программирование для меня это чисто любительское занятие. Добровольно в него не лезу, только из крайней необходимости. На уровне ардуинок можно сказать.
Ну и не надо если не заходит. Видимо, индивидуальное неприятие. Я его тоже не перевариваю.
Попробуй TypeScript например. Сфера применения, насколько я могу судить, та же.
Попробуй TypeScript например. Сфера применения, насколько я могу судить, та же.
У меня митуёвина наоборот, с ЖСа перекатываюсь в сишарп, точнее в асп дотнет. ЖС удобный для веба, и достаточно простой если не лезть в дебри. Шарп гораздо тяжелее в понимании, ну или это я тупенький и привыкший к ЖС
Единственное, что в js отличается и что надо знать - это промизы и асинхронность из коробки. Остальное должно быть легко, если ты ui не делаешь. В ui там еще фреймворки, библиотеки, стейт и прочие радости.
попробуй рубирейлс
Сам долго писал на js по работе, потом перекатился на C#. Когда надо что то писать на js начал испытывать нехватку строгой типизации, нет нормальных подсказок IDE. В итоге нашел спасение в документировании методов JSDoc с указанием типов параметров. Еще как вариант писать на тайпскрипте.
Проблему свою ты так и не объяснил. Язык довольно простой, си-подобный. Ебанина в рот и хуё-моё у меня начинается когда лезу в стеки зависимостей. А уж если тайпскрипт наслаивается, то можно просто всё проклинать когда вылазят ошибки типизации с темплейтами пятиэтажной сложности. Хуй знает как его освоить, наверное молча и иногда матерясь. Я не понимаю за что он так полюбился большинству разработчиков.
То ты под .NET не фиксил код написанный целиком с использованием рефлексии. ООП тупо нет, нет даже сущностей, есть только безымянные проперти в кортежах списков кортежей. Я схожу с ума, памагити
>>То ты под .NET не фиксил код написанный целиком с использованием рефлексии.
Пиздец. Это что -- ручная обфускация кода? Шоб 100% никто после не разобрал?
Пиздец. Это что -- ручная обфускация кода? Шоб 100% никто после не разобрал?
Нет, это инициативному долбоебу доверили разработку проэкта с нуля. Ну он и изобрел свой уникальный фреймворк на парсинге классов и пропертей через рефлексию (а на проперти еще и самописные атрибуты вешаются, я в ауте). Универсальное решение он захотел сделать, ага
https://javascript.info/
там где то можо выбрать русский или укринский
наверное самый лучший учебник.
а то что "мозг подпорчен" - это фикция и хуйня ) Мозг многогранен, и то что тебя сначала хуйне научили, останется в мозгу как инфа как делать не надо, иликак нечто специфичное
там где то можо выбрать русский или укринский
наверное самый лучший учебник.
а то что "мозг подпорчен" - это фикция и хуйня ) Мозг многогранен, и то что тебя сначала хуйне научили, останется в мозгу как инфа как делать не надо, иликак нечто специфичное
Мне нравится вот эти видеоуроки, но нужно знание английского.
https://rutracker.org/forum/viewtopic.php?t=5896967
На юдеми их ещё время от времени обновляют.
https://rutracker.org/forum/viewtopic.php?t=5896967
На юдеми их ещё время от времени обновляют.
Никак. Ебнуться---это первое требование к разработке на JS.
Как по мне - к любой разработке. Я так и не вкатился.
Мозг в свое время констатировал - ну нахуй, будешь сисадмином.
Мозг в свое время констатировал - ну нахуй, будешь сисадмином.
Вот неплохой курс. Довольно подробно все рассказывает.
Это реально полный курс, или он на пятом часу начнет писюном перед камерой вертеть, потому что никто не доживает до этого времени?
Ну я дошел до 7,5ч, пока писюнов не замечено.
ну и какой смысл тогда тратить на это время?
Так видос на 11ч. Надежда еще есть.
а чё, у программистов так принято? у кого больше писюн — тот сеньор?
Никак блять
Попробуй Dart в связке с Flutter, если хочешь фронтенд попробовать. Или начинай сразу учить TS. Я вот после JS пытаюсь разобраться с кодом на Java и проклинаю всё на свете
да тоже ебнутый язык и фреймворк.
по синтаксису точно - наркоманы какие-то придумывали.
довелось на нем чуточку писать - осталось чувство глубокого отвращения.
по синтаксису точно - наркоманы какие-то придумывали.
довелось на нем чуточку писать - осталось чувство глубокого отвращения.
Попробуй TypeScript. Та же фигня, но замаскированная под нормальный язык.
js после паскаля охуенен. я тож на уровне любителя, а дальше не осилил учиться пошел в другую среду, но потом по цепочке от эникея до дба в аутсорсе попал датабазить low-code платформу где оказалось что сертификаты mssql можноо в жопу засунуть а осваивать надобно js. и тут вдруг до меня доперли объекты, а дальше пошло как по маслу.
вот простой пример читал на хабре про задачи д.кнута, там питон, еще что-то (кажись паскаль, я уже 25 лет назад его не помню), попробовал на js прикинуть. простой лаконичный язык.
или физбазз элементарно просто:
console.log([...Array(100).keys()].map(n=>++n%15? n%5? n%3? n:'Fizz':'Buzz':'FizzBuzz'))
вот простой пример читал на хабре про задачи д.кнута, там питон, еще что-то (кажись паскаль, я уже 25 лет назад его не помню), попробовал на js прикинуть. простой лаконичный язык.
или физбазз элементарно просто:
console.log([...Array(100).keys()].map(n=>++n%15? n%5? n%3? n:'Fizz':'Buzz':'FizzBuzz'))
в typescript это пофиксили вроде
Фиг там, большинство библиотек пишутся для JS, поэтому разбираться с типами придется самостоятельно. Попробуй подобрать типы для Редакса.
Вот тут к примеру не будет ошибки
Вот тут к примеру не будет ошибки
ну я конкретный случай, который в меме проверил. А вот это на скрине честно говоря не понятно, почему должно вызвать ошибку. Допустим int a = 1; double b; b = a; Нет же ошибки?
Если по джаву, то int (4 байта) -> double (8 байт) безопасно,интервал чисел который описывает double включает в себя любой int. Преобразование пройдет без потери информации, может быть проведено неявно.
В случае a=b мы попытаемся 8байт впихнуть в 4. И тут уже появляется риск потерять какую-то информацию. Поэтому это небезопасно и потребуется явно прописать a = (int) b; Подтвердив компилятору тем самым, что ты в курсе о возможной ошибке и берешь ответственность на себя.
В случае a=b мы попытаемся 8байт впихнуть в 4. И тут уже появляется риск потерять какую-то информацию. Поэтому это небезопасно и потребуется явно прописать a = (int) b; Подтвердив компилятору тем самым, что ты в курсе о возможной ошибке и берешь ответственность на себя.
это все и козе понятно, я этот пример привел как аналогию, к примеру на скрине. Там же тоже происходит каст без потери информации, поэтому ошибки быть не должно. Или нет?
Поэтому нормальные люди все инпуты приводят к нужным значениям сразу. А не в процессе каких-то вычислений. ТС просто помогает запомнить, что куда приходит. И указать на ошибку. Но это не панацея, конечно, а просто ещё один фреймворк
Тут у не должно быть ошибки, потому что на 13 строке происходит преобразование при присваивании. Там неявно происходит:
const simpleConfig: SimpleConfig = stringConfig as SimpleConfig;
Т.к. version:number удовлетворяет version: number|string, то ошибки и нет.
const simpleConfig: SimpleConfig = stringConfig as SimpleConfig;
Т.к. version:number удовлетворяет version: number|string, то ошибки и нет.
Да, плохой пример. Не помню уже почему, я его записала. Может ошиблась с названиями переменных
Вот другой. Тут вроде как раз поведение, которое может создать ошибки
Вот другой. Тут вроде как раз поведение, которое может создать ошибки
Это правильное поведение, согласно документации. TS проверяет excessive properties только в object literals (как в последней строке). При присваивании переменной он проверяет только обязательные свойства, но не лишние.
Не совсем понимаю, как такое может создать ошибку, ведь если ты в будущем попробуешь обратиться к wat.d — он сразу покажет ошибку, ведь такого свойства в типе Test нет.
Не совсем понимаю, как такое может создать ошибку, ведь если ты в будущем попробуешь обратиться к wat.d — он сразу покажет ошибку, ведь такого свойства в типе Test нет.
тогда и второе не должно вызывать ошибку?
Второе как раз и есть object literal.
Так я не говорю, что это неправильное поведение. Я говорю, что если целиком довериться TS, то можно наделать ошибок, если не знать подводные камни
Ну, я бы не сказал, что это прямо подводный камень, это ожидаемое и оправданное поведение. Вот прямо в этом примере я не совсем понимаю, какие ошибки можно "потом" наделать. Я не говорю, что в TS совсем нет других приколов, но большая часть из них — это непонимание самого TS, а не его недостатки.
класс для альтернативно одаренных второгодников с динамической типизацией ?
Тише, тут девятиклассники открывают для себя математику.
Вон там пишут что js сложный, а вон там что тайпскрипт делает то же самое, что и js.
Какой многогранный мир!
Вон там пишут что js сложный, а вон там что тайпскрипт делает то же самое, что и js.
Какой многогранный мир!
Сишарп:
Ты ща чары решил вычесть? Ну хуль, Чары это типа тоже числа же. На инт. Но вообще ты мудак.
Ты ща чары решил вычесть? Ну хуль, Чары это типа тоже числа же. На инт. Но вообще ты мудак.
Ну слава богу хоть в программировании нет никакой политоты.
ее обязательно подвезут.
нужно просто подождать.
нужно просто подождать.
А вообще возможна операция типа такой:
'363' - '3' =
И какой будет ответ?
'363' - '3' =
И какой будет ответ?
SyntaxError: invalid syntax
Если определить оператор "-" для str, то ответом может быть строка "ты пидор"
Чтобы написать коммент, необходимо залогиниться
Отличный комментарий!