TypeScript не ператварае слабую інжынерыю на сільную інжынерыю.
TypeScript не выправляе слабую інжынерную практыку. Строгая безпека тыпа дапамагае, але няправілыя межы і неперапрацаваныя правілы домэна все равно прыносяць багі. Качэнне коду важлівей сінтаксісу.
Безпека тыпаў — гэта не тое ж сама, што і якасць програмнага забэрэжчыка
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 толькі таму, што яны оба ўважаюцца «з тыпамі».