Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 September 04

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in NodeUA - JavaScript and Node.js in Ukraine
Утиная типизация, да. Либо смириться с ней, либо не использовать
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
нет же, можно с ней жить, не имея проблем, но придерживаясь правил, и настроив тулинг на запрет мутации, запрет примесей, запрет var/let, запрет неявного приведения и все будет ок
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
а можно наделать мутации и примесей с TS )))
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
невозможно заменить мозги языком
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
говнокодер в любом языке найдет как написать ужасы
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in NodeUA - JavaScript and Node.js in Ukraine
Знаю. Мой любимый пример:

Fully typed TypeScript code (well compiled)
type Cat = {meow: () => void}
type Dog = {woof: () => void}
const createCat = (): Cat => ({meow: () => console.log('Meow!')})
const createDog = (): Dog => ({woof: () => console.log('Woof!')})

const mutateAnimals = (animals: (Cat | Dog)[]) => animals.push(createDog())

const cats: Cat[] = []
mutateAnimals(cats)
cats.forEach(cat => cat.meow())
But failed in runtime with cat.meow is not a function
Because of what? Because of mutations!
Be smart, don't use mutations
источник

Y

Yaroslav in NodeUA - JavaScript and Node.js in Ukraine
Единственно верного решения не существует. Хотя существует много неверных. (ц)
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in NodeUA - JavaScript and Node.js in Ukraine
Кстати, да. Ридонли этого не пропустит, и я уважаю за это рескрипт
источник
2021 September 05

DS

Dmitry Semigradsky in NodeUA - JavaScript and Node.js in Ukraine
Так ридонли и в TS есть

(animals: readonly (Cat | Dog)[]) => ...
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
А если ты на js+тесты а он на ts+тесты? То разница только в том что он будет лишние буквы набирать, когда пишет типы? И «кто победит» решает только ваша скорость набора текста?
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
+1, написать быстро и я могу - а саппортить потом кашу функций без типов с непонятными входными и выходными данными типа processPayment(params) или printReceipt(data) где params или data неизвестно что собой представляют и неизвестно что содержат - попробуй посаппорти (и порефактори).

визуально видеть что params имеет такой-то тип с такими-то полями а data другой тип с вот такими полями - очень облегчает понимание кода

такое ощущение что доклад сравнивает « тайпскрипт без тестов» (и других практик) и «js с тестами» в такой ситуации конечно второе побеждает. а если сравнивать «тайпскрипт с тестами» и «js с тестами» то первое читабельнее
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Если тесты будут на тс, то я даже фору могу дать :)
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Тесты на тс это ад в плане написания :)
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Я люблю рассуждать о будущем, но процитирую себя же
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Переслано от Illya Klymov
но к примеру какой-то абстрактной компании, которая никак не выйдет на биржу и имеет оценку в несколько миллиардов приглашенные эксперты ВОЗМОЖНО сказали что внедрение тайпскрипта снизит стоимость компании на бирже на условные 20% в ближайшей перспективе (ближайшая перспектива - 3 года) (то что вы не прочитаете в паблике)
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Так что с "будущим" по мнению экспертов индустрии все не так однозначно :)
источник

d

dirtyhandz in NodeUA - JavaScript and Node.js in Ukraine
Я думаю многим было бы интересно посмотреть :) Единственное, надо чтобы ваш уровень примерно одинаковый был, а как это объективно проверить - хз…
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Мы оба пишем функцию sendInvoice(amount, description, recipientName, email) - Я на ts ты на js - функция делает инвойс в html формате и шлет на почту по smtp - не вижу ничего что усложнит мне работу кроме того что я потрачу чуть времени на дописывание :number и :string в 5-10 местах
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
В таком примере - да. А вот как только у нас оказывается что-то посложнее на входе - то в тесте мы вынуждены подкладывать настоящую фикстуру или делать is any
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Я кстати это считаю проблемой так как это не позволяет отличить значимые входы теста от незначимых
источник