Галоўная / Артыкулы / TypeScript не ператварае слабую інжынерыю на сильную інжынерыю.

TypeScript не ператварае слабую інжынерыю на сильную інжынерыю.

Строгія типы дапамагаюць, але любыя паслабыя межы і непрабаваныя правіла домэна все равно выконваюцца — качэнне коду важней сынтаксіса.

804 слоў

Безпека типаў — гэта не тое ж сама, што і якасць програмнага забэрэжчыка

TypeScript запобегае выявленню важлівага класу бягоў. Аднак ён не запобегае слабам дыяграмам проекту, незрозумелым моделям домэна або недбаламая роботе пад час выканання.

function transferMoney(
  from: Account,
  to: Account,
  amount: number
) {
    from.balance -= amount;
    to.balance += amount;
}
const user: any = fetchUser();
user.address.street.foo.bar();
interface User {}
interface UserResponse {}interface UserData {}interface UserDTO {}interface UserPayload {}interface UserState {}

TypeScript не розумее бізнес-логікі

Кампайляры не можуць ведаць, чыя правила надання зніжака є справедлівымі. Тыпы фіксуюць форму дадзеных; людзі яшчэ павінны стварыць тесты і гарантаваць незменнасці.

Найбольш апасным типам є any

any выключае можлівасці кампайляра. Лепш выкарыстоўваць unknown у поўнай меры або точныя з’еднанні типаў.

Сильныя типы не можуць адзначыць слабую архітэктуру

Структура слоёў, межы і взаімадзеянне модуляў маюць большое значэнне, чым проста адзначэння інтэфейсамі „глыбокай структуры“ коду.

Тыпы описваюць рэальнасць

Модэлі должны адаптавацца да домэна. Тыпы, якія выдаваюць значэння, не равнае null, калі API вяртае null, ствараюць хыбную паверу ў правільнасці даных.

Паслабленыя прывычкі растуць быстрей у TypeScript

Копіюванне-выклейванне DTO, занадта моцныя „богатыя“ типы і часта выкарыстоўванне асэрцый шырока распространяюцца пад маскай „тыпавання“.

Найлепшыя разработчыкі TypeScript ўжо былі астаткоўскімі разработчыкамі JavaScript

Дисцыпліна выйшае прынцыпам синтаксису. TypeScript толькі паўсилляе прывычкі — як хорашыя, так і паслабленыя.

Іспользуйце кампайлер як партнера

Увімкніце строгасць, вылечыце коранавые прычыны і дазвольце кэсам кераваць перерабкамі, а не толькі ўтамовваць іх.

Праўая апгрэйд — не TypeScript

Апгрэйд — это болей ясныя модулі, перапрацаваныя правіла домэна і чыстыя типы. TypeScript — это толькі інструмент для гэтай роботы, а не замена ёй.

Перад тым, як обгаварываць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обгаварываць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обгаварываць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обсюджваць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обсюджваць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обсюджваць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обсюджваць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обсюджваць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обсюджваць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обсюджваць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обсюджваць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перад тым, як обсюджваць кансэпты стылю, увялічце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюце DTO-яў з маперамі — не прабачайце прасачэння структурах дадзеных у компаненты UI толькі таму, што яны оба “тыпаваныя”.

Перш чым гаварыць пра кансэпты стылю, увялічкайце noImplicitAny і strictNullChecks; гэтыя два параметры выкрываюць больш рэальных багоў, чым правілы называння.

У межах системы супакоўваюць DTO-яў з маперамі — не прабачайце, каб форматы дадзеных прасочыліся ў компаненты UI толькі таму, што яны оба ўважаюцца «з типамі».