Comments 29
А самое главное не перевели:
Hello, I am a student in Vancouver, Canada and studying web development.
Понятно зачем это писал hiro9108 и откуда местами неточности. Парень все равно молодец - он учится. Интересно, почему вы посчитали эту статью достаточно полезной, чтобы тратить время на перевод и оставили все ошибки без изменений?
Я выбираю статью по названию, затем быстро пробегаюсь по ней, если считаю, что кому-то перевод может быть полезен, то начинаю переводить. Любую статью считаю полезной.
Для меня они полезны в том, что позволяют получить некоторые данные, дают практику в английском во время перевода, лучше начинаю понимать структуру написания текстов.
Для всех остальных же, также позволяет получить, возможно, новую информацию, которую, на родном языке, воспринимать немного, а иногда и на много легче.
По поводу ошибок, видимо мне не хватило опыта, чтоб их заметить, когда встречаю очевидные ошибки стараюсь отмечать их в тексте как коментарий переводчика. Если у вас есть свободное время, могли бы указать на ошибочные моменты?
Можете ли вы угадать, что вернет этот код?
Результат применения оператора +
к двум операндам. Язык на то и имеет динамическую типизацию, что вы описываете скорее логику процесса.
Статья называется "JavaScript vs TypeScript. Почему Вы должны изучить TypeScript?", но тут лишь одно небольшое сравнение, дальше автор объясняет типы в тайпскрипте.
Теперь к переводу
JavaScript – это более свободный язык
если вы встретите много кода в вашем проекте
Я не могу, т.к. pikachu функция может принимать в себя значения любого типа, к примеру, строка, число и т.д.
разработчики должны уделять больше внимания типам аргументов, которые нужны в функции, а также как значение должно возвращаться
У TypeScript есть несколько примитивный типов данных
В порядке бреда: возможно, способность функции принимать параметры любого типа не слабость, а супер сила, а вы пытаетесь уместить гениальное в узкие рамки общепринятого. Подумайте ))
Если серьезно, с типизацией жизнь программиста становится сильно проще, но кто не бредит, тот не пьет шампанское :-)
Блог PVS-Studio не раз и даже не два показывал силу и эффективность статического анализа кода как средства отлова ошибок на как можно более ранних стадяих. И вроде бы TypeScript тоже претендует на эту нишу. Но как-то не получается
let data = { a: 1, b: 2, c: 3 };
data = JSON.stringify(data);
data = AnythingOther(data);
И в таком примере TypeScript будет немножечко не доволен
Таким кодом даже я, как разработчик, недоволен
Лично я бы использовал три разных переменных (точнее, три разных константы). С разными именами, отражающими смысл данных.
С другой стороны, в том же Rust, который куда более строг в плане типов чем TS, разрешено объявлять переменные с одним и тем же именем любое число раз, и каждый раз с новым типом...
Ну, если это разные переменные – почему бы нет (можно же в C-подобных языках определять переменную с тем же именем внутри вложенного блока, в Rust просто пошли дальше), хотя я бы предпочёл так не делать. В данном же случае присваиваем значения разных типов одной переменной, imho так не стОит делать.
Или просто использовать данные/результаты как аргументы
const data = AnythingOther(JSON.stringify({ a: 1, b: 2, c: 3 }));
Если это не сверх громоздко и не требуется для отладки, то не вижу смысла выделять переменную/константу для хранения промежуточного результата.
Лично я бы использовал три разных переменных (точнее, три разных константы). С разными именами, отражающими смысл данных.
Это сильно лучше, чем предложение снизу запердолить всё в одну строку. Нередко в этом даже есть смысл. Но в функции, которая занимается, например, только сериализацией данных и ничем больше, заводить гору переменных -- это трэш. Если бизнес скажет, что необходима обфускация потока данных, и вы решите JSON преобразовывать ещё в base64 -- вам придётся затронуть не одну строку, но ещё и следующую. А как удобно в целях отладки отключать этапы! Изменения такого неоднородного кода над одной сущностью будут болезненными.
Всё ещё лучше, чем написать let data:any.
Тайп чекер не спасает от ошибок в реализации бизнес-логики, о которых я рассказал. Удачной отладки!
Ничто не спасает от ошибок в реализации бизнес-логики.
Так можно и IDE выкинуть, ведь "IDE не спасает от ошибок в реализации бизнес-логики".
Спасает написание читабельного кода. Запхать всё в одну строку и навернуть кучу вложенных конструкций в одной строке -- вот уж где и просто читается, и просто отлаживается.
Если раскидать код на отдельные строки -- читается сильно проще
Это тоже не спасает от ошибки бизнес логики.
Я за раскидывание по строкам, не вижу, где утверждал обратное
Бинго. Теперь погнали. Есть 2 сегмента кода:
function doAnything(data: Object) return String {
data = JSON.stringify(data);
// data = AnythingOther(data);
if (data.length < 15) {
data += ' ' * (15 - data.length);
}
return data;
}
Допустим, добавляем 3ю строчку. Например, бизнесу стрельнуло гонять не JSON, а base64. Ошибиться в таком коде сложно. Но, по-вашему, код ужасен:
Таким кодом даже я, как разработчик, недоволен
Исправим его!
function doAnything(data: Object) return String {
const jsonData: String = JSON.stringify(data);
// convertedData: String = AnythingOther(jsonData);
if (jsonData.length < 15) {
const jsonDataPlus: Srting = jsonData + ' ' * (15 - jsonData.length);
}
return jsonDataPlus;
}
Прекрасный код, не находите? Идеалочный. Усложните в своём воображении преобразование на +2 этапа и добавьте больше типов (UInt8Array, ArrayBuffer) и ещё чего-нибудь любопытного -- и начнёт бросаться в глаза сложность сопровождения 2го варианта -- на каждое изменение кода необходимо затрагивать не одну, а минимум 2 строки
// Я в этом коротком примере вылавливаю уже 4й баг. А вот и 5й. Знаете, я начинаю что-то понимать в этой жизни. С такой манерой написания кода у программистов всегда будет работа. В аду.
В принципе, если число таких функций будет расти дальше, есть резон всё это заменить на Array.reduce, но это уже другая история и не всегда возможно
О каком реалмайм анализаторе в TS идёт речь?
у них же не реалтайм анализатор в отличие от ts?
Что TS, что анализатор PVS-Studio позволяют обнаружить ошибки до запуска кода
JavaScript vs TypeScript. Почему Вы должны изучить TypeScript?