voraa, это он для C# ругается, перетыкни на ts - норм сгенерит.)
|
Цитата:
type MyType = { a: string; b: number; }; const jsonObj = { a: 'aaa', b: 123, c: 456, d: {...} }; function f(p: MyType) { console.log(p.a.toUpperCase(), p.b.toFixed()); // проверка типов, автокомплит и т.д. } f(jsonObj); // в параметр типа MyType передали jsonObj, где дохрена всего "лишнего" |
Alexandroppolus, по секрету скажу: если совсем лень - можно прям энтот json использовать как тип. Да, вместо абстрактных string там будут конкретные значения, но если ты только читаешь и не пишешь - то тебе пофигу.)
|
Aetae,
Ну это если мы заимпортили json или прямо вручную создали объект-литерал. Для загруженного объекта тип будет unknown или даже any.. |
Alexandroppolus, это очевидно(вроде). TS работает на этапе компиляции, откуда ему знать что ты там когда-нибудь в рантайме загрузишь...
|
Цитата:
А истеричное " Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
![]() Если пипл хайвает, если бизнес хавает, то зачем я должен "страдать за народ"? Я прекрасно умею писать оптимизированный код, только он никому не нужен. |
Получается замкнутый круг. Сначала быстро пишем неоптимальный код, получая запредельные всякие FCP, LCP. Потом хватаемся за голову и тратим время, больше чем сэкономили на коде, что бы оптимизировать их.
|
Цитата:
Ну и вообще это отхождение от темы, т.к. TS ровно никак не влияет на производительность, ибо компилируется в JS практически 1 к 1. Вот Ангуляр и Рекат - да, влияют, ибо требуют много ручного труда для производительности, а реакт аж в документации пишет "никогда не оптимизируйте, потом когда будет узкое место там и пофиксите", что делает реакт на деле самым тормозным из всех, при вполне нормальной возможности оптимизации.:) В Vue с оптимизацией дело куда лучше, потому что она работает по умолчанию, но кривые руки всё равно никто не отменял.) |
Ребята, материться не обязательно... :nono:
|
Цитата:
P.S. словно описал философию Microsoft XD |
Цитата:
|
Цитата:
Это какой-то .sass или .less для .css, в которых, лично для меня, нет никакого смысла. Лишние зависимости, создающие ненужное напряжение. Я за чистый, ясный и высокоскоростной код. Microsoft можно понять — это корпорация, которой просто необходимо делать деньги. Вот она и клепает всё подряд и ещё потом создаёт на это тренды. Вообще грустно за этих корпораций. Столько говна делают, лишь бы хоть что-то сделать. Типа "на месте не стоим, развиваемся". Ещё постоянно преподносят это как сверхинновации. Помню лет 10 назад на обучении делали сайты на ASP.NET ... сейчас вспоминаю и думаю — что это за треш был вообще. |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Вопрос для меня только в том, что дает ts, что бы ради него стоило заморачиваться. Так часто поступают в рекламах - берут маленькую проблеку, раздувают ее в проблемищу вселенского масштаба и предлагают ее решение (создающее другие проблемы, но об этом молчат). Так же и ts. Отсутствие типизации в js раздули в проблемищу (А для многих это проблемка). Решение - ts. Но при этом часто приходится делать бессмысленные преобразования типов и необходим этап компиляции. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Тесты, написанные на js в консоле (вообще не представляю, как там можно написать больше 5-7 строк), в код можно перенести и оформить на ts. Все равно ведь в готовый код это переносится не копипастом. |
Цитата:
|
Цитата:
function getLength<T>(arg: T): number { return arg.length; } Просто франкенштейн какой-то. Программа должна быть оптимизированной на всех уровнях. Не понимаю зачем использовать какую-то непонятно излишнюю фукциональность, требующую значительно больших мощностей. Например, у нас есть информация, которая в одном формате весит 1 килобайт, а во втором формате - 1 мегабайт. Вот и спрашивается - нахрена мне второй формат?? Аналогий можно бесконечно приводить. |
Цитата:
|
Цитата:
Если еще будет мат - тему закрою. |
webgraph, фигню говоришь, как обычно.
Во-первых: voraa(и все остальные) говорят про скорость исполнения результирующего кода на клиенте. И она не отличается. Не может отличаться. Во-вторых: если говорить про скорость работы одного и того же человека с TS, против JS, то она выше, а не ниже. Если у тебя ниже, значит ты просто никогда не работал с TS, мелкие попытки потыкать - тут не играют роли. В-третьих: в TS мне надо думать на порядок меньше, чем в JS, а освободившиеся мощности всегда можно направить на что-то более полезное. |
Цитата:
Смотришь на это нечто и задаешься вопросом: «А что, собственно, эта хрень в ка-ве аргумента принимает?» Переписать эту функцию, например, так и все вопросы отпадают (3 варианта на выбор): function getLength(lengthAwareItem: { length: number }): number; function getLength(array: unknown[]): number; function getLength(item: unknown[] | { length: number }): number { return item.length; } |
Цитата:
|
Nexus, если по логике вещей удобно иметь какой-то тип, то в стандартной либе он скорее всего есть, начинай писать - IDE подскажет.)
function getLength(item: ArrayLike<unknown>): number { return item.length; } |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
В общем можно сделать вывод, что TypeScript актуален, когда:
1. Переходите с языков со строгой типизацией и не можете без них жить 2. Часто возникают ошибки с типизацией 3. Просто требуется и без него не берут на работу (странно) 4. Работаете над кучей разных проектов, в которые даже не вникаете (странно конечно) Во всех остальных случаях он не актуален. Открывая эту тему были ожидания узнать о каких-то прям революционных преимуществах без которых прям разработка не разработка. Или каких-то инновационных функциональностях, которые прям тотально улучшают процесс. Назвать это прям отдельным языком программирования у меня не поднимается язык. Очевидно это сделали специально, чтобы придать вес этому фреймворку, подобному jQuery и т.д. |
Цитата:
Одно дело, когда в переменную пихать то строки, то числа Другое дело, если есть объект obj = {a:1, b:2, c:3} и вы вдруг ошиблись и написали obj.A = 11; то js это проглотит и не подавится. И ошибка потом может всплыть в самый непредсказуемый момент. ts предупредит об ошибке, если объекту точно задан тип. Есть и другие ситуации, когда, например, возвращаемое значение функции может быть разных типов (например null у querySelector) И ts также разумно предупредит об этом. И надо будет либо делать проверку (она действительно бывает необходима, но о ней можно просто забыть), либо убеждать ts, что я точно знаю, что null тут не будет Ну и плюс самодокументация программы. Читать программу и понимать, что в переменной может быть и в каком типе проще, чем разбираться по коду, что в нее присвоили. Переменная может называться startDate, но по имени не скажешь, что в ней - Date, строка, целое число миллисекунд? Меня в ts раздражает этап компиляции. Для небольшого проекта, особенно когда весь проект делаешь сам, это лишнее да и в js разобраться можно. Ну и последующая отладка сгенерированного кода у меня вызывает трудности. Хотя может я знаю далеко не все. |
Цитата:
|
Цитата:
Во-вторых, здесь очевидно, что нужно несколько более внимательнее относиться к написанию кода. Понятное дело, что полностью избежать ошибок это нечто. Но если более осмысленнее подходить к процессу, то и ошибок будет значительно меньше. Особенно такого плана. А какую вы IDE используете?) |
Цитата:
Цитата:
Цитата:
|
Было бы реально круто использовать Solidity — там как раз прям строжайшая типизация и много всяких плюшек. Мне прям оч нравится его архитектура.
|
Часовой пояс GMT +3, время: 08:20. |