Pull to refresh

Comments 29

Мне кажется, что аннотации типов будут кушать в разы меньше места чем тривиальные юнит-тесты, проверяющие типобезопасность. Так что всё равно net gain.

UFO just landed and posted this here
Вообщем из статьи можно вывести что достоинство использования динамической типизации только в том что новичкам легче язык изучать.

По моим скромным личным наблюдениям на ниве питона.
Динамика облегчает жизнь где-то до 500 строк. Но чем дальше проект от 500 строк (вверх), тем сильнее она портит жизнь.

А кто знает, уже починили спреды?

UFO just landed and posted this here
нет
Скрытый текст
type Spread = {
	foo : string
	bar : string,
}

const obj1 = {
	foo : '22'
};
const obj2 = {
	bar : '22'
};


const spread : Spread = {
	...obj1,
	...obj2,
	// Далее можно вставлять что угодно - компилятор не ругается
	anyProp : 'bar',
	anyProp2 : 'foo'
};
UFO just landed and posted this here
Все аргументы в стиле «1 кг сельдерея в день снижает риск образования бляшек на 14%!»
UFO just landed and posted this here

Во-втором примере ничего не изменилось. Все также непонятно какие методы оплаты доступны. Если использовать статическую типизацию, то почему бы не делать это до конца?

А, все, дочитал до нужного момента. Вопрос снят.

UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Скорее всего минусы не за комментарий в целом, а за упоминание JSDoc, который многие не любят, особенно в противовес наглядных типов, которые так и так пишутся, а jsdoc еще надо заставить себя написать
То есть функция которой требуется документация хуже чем которой не требуется, даже если они делают одно и тоже.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
«Портянки» появляются в основном ради компилируемости бесконечного множества легаси-кода на JS.
UFO just landed and posted this here
Преимущество № 2: У вас появляется живая документация

Является ли quote числом? Или логическим значением? Платёжный метод — это объект?

Венгерская нотация?

Все преимущества сводятся к одному — воможность четкого (гарантированно верного) автоматического анализа кода, по сути эмуляция компиляции (TypeScript). По сути это уже не скриптинг. И это очень большое подспорье как минимум в случае больших проектов и распределенных команд.

Мой доклад на NodeJS SPB: «Нужен ли мне TypeScript» как раз по теме статьи.

Видео: https://youtu.be/Yxsf06JSGCE?t=3h9m49s ((с 3:09:49)
Презентация: https://easy-deep-learning.github.io/types-sugar-in-javascript/

Если кратко: есть более полезные практики, которые имеет смысл внедрить ДО «статической» типизации:
  • покрытия тестами
  • соглашение по стилю кода, особенно наименованию переменных
  • jsDoc — Совершенные редакторы могут проверять код по jsdoc. При этом, на мой взгляд, код не загрязняется визуально «типизацией» (кавычки, потому что «типизация» в JS — только сахар.

Цитируя одного уважаемого докладчика: "говорят, что в природе есть проект, который поддерживает JSDoc в консистентном состоянии на 100%, но я такого не видел".

type Paypal = { id: number, type: 'Paypal' };
type CreditCard = { id: number, type: 'CreditCard' };
type Bank = { id: number, type: 'Bank' };
type PaymentMethod = Paypal | CreditCard | Bank;

Сомнения адепта TS:
type PaymentMethod = { id: number, type: 'Paypal' | 'CreditCard' | 'Bank' };

Не?
Sign up to leave a comment.

Articles