StyleGuide
Неофіційний посібник зі стилю TypeScript
Люди запитували мене про мою думку щодо цього. Особисто я не дуже наполягаю на дотриманні цього в своїх командах і проектах, але це допомагає згадувати про це як тай-брейк, коли хтось відчуває потребу мати таку послідовність. Є інші речі, щодо яких я відчуваю набагато більше, і вони описані в розділі про поради (наприклад, твердження типу погане, налаштування властивостей погане) 🌹.
Ключові розділи:
Variable and Function
Використовуйте
camelCaseдля імен змінних і функцій
Причина: звичайний JavaScript
Bad
Good
Class
Використовуйте
PascalCaseдля імен класів.
Причина: це насправді досить традиційно для стандартного JavaScript.
Bad
Good
Використовуйте
camelCaseчленів класу та методів
Причина: природно випливає з умов іменування змінних і функцій.
Bad
Good
Interface
Використовуйте
PascalCaseдля імені.
Причина: Подібно до класу
Використовуйте
camelCaseдля членів.
Причина: Подібно до класу
Не вживайте префікс
I
Причина: нетрадиційне.
lib.d.tsвизначає важливі інтерфейси безI(наприклад, Window, Document тощо).
Bad
Good
Type
Використовуйте
PascalCaseдля імені.
Причина: Подібно до класу
Використовуйте
camelCaseдля учасників.
Причина: Подібно до класу
Namespace
Використовуйте
PascalCaseдля імен
Причина: Конвенція, яку дотримується команда TypeScript. Простори імен фактично є просто класом зі статичними членами. Імена класів:
PascalCase=> Імена простору імен:PascalCase
Bad
Good
Enum
Використовуйте
PascalCaseдля імен enum
Причина: Подібно до класу. Є типом.
Bad
Good
Використовуйте
PascalCaseдля члена enum
Причина: Конвенція, якої дотримується команда TypeScript, тобто розробники мови, наприклад
SyntaxKind.StringLiteral. Також допомагає з перекладом (генерацією коду) інших мов на TypeScript.
Bad
Good
Null vs. Undefined
Бажано не використовувати жоден із них у разі явної недоступності
Причина: ці значення зазвичай використовуються для підтримки узгодженої структури між значеннями. У TypeScript ви використовуєте types для позначення структури
Bad
Good
Загалом використовуйте
undefined(замість цього подумайте про повернення об’єкта на зразок{valid:boolean, value?:Foo})
Bad
Good
Використовуйте
null, якщо це частина API або домовленість
Причина: це традиційно в Node.js, напр.
errorмає значенняnullдля зворотних викликів у стилі NodeBack.
Bad
Good
Використовуйте правдиву перевірку для того, для об’єктів
nullorundefined
Bad
Good
Використовуйте
== null/!= null(а не===/!==), щоб перевірити наявністьnull/undefinedна примітивах, оскільки це працює як дляnull/undefined, але не інші помилкові значення (наприклад,'',0,false), напр.
Bad
Good
Formatting
Компілятор TypeScript постачається з дуже гарною мовною службою форматування. Незалежно від результату, який він дає за замовчуванням, достатньо, щоб зменшити когнітивне перевантаження команди.
Використовуйте tsfmt, щоб автоматично форматувати свій код у командному рядку. Крім того, ваша IDE (atom/vscode/vs/sublime) уже має вбудовану підтримку форматування.
приклади:
Quotes
Надавати перевагу одинарним лапкам (
'), якщо не використовувати екранування.
Причина: це робить більше команд JavaScript (наприклад, airbnb, стандарт, [npm](https: //github.com/npm/npm), вузол, google/angular, facebook /react). Це легше друкувати (на більшості клавіатур не потрібен зсув). Команда Prettier також рекомендує одинарні лапки
Подвійні лапки не без переваг: дозволяють легше копіювати вставляти об’єкти в JSON. Дозволяє людям використовувати інші мови для роботи без зміни символу цитати. Дозволяє використовувати апостроф, напр.
He's not going.. Але я не хочу відхилятися від того, що спільнота JS вирішила справедливо.
Якщо ви не можете використовувати подвійні лапки, спробуйте використовувати зворотні галочки (`).
Причина: вони зазвичай представляють намір досить складних рядків.
Spaces
Використовуйте два пробіли, не табуляцію.
Причина: це робить більше команд JavaScript (наприклад, airbnb, idiomatic, standard, npm, вузол, google/ angular, facebook/react). Команди TypeScript/VSCode використовують 4 пробіли, але, безперечно, є винятком у екосистемі.
Semicolons
Використовуйте крапку з комою.
Причини: явні крапки з комою допомагають інструментам форматування мови давати послідовні результати. Відсутній ASI (автоматична вставка крапки з комою) може призвести до помилок, напр.
foo() \n (function(){})буде одним оператором (а не двома). TC39 попередження про це також. Приклади команд: airbnb, idiomatic, [google/angular](https://github .com/angular/angular/), facebook/react, Microsoft/TypeScript.
Array
Анотуйте масиви як
foos: Foo[]замістьfoos: Array<Foo>.
Причини: легше читати. Він використовується командою TypeScript. Полегшує пізнання того, що щось є масивом, оскільки розум навчений виявляти
[].
Filename
Назвіть файли за допомогою camelCase. наприклад utils.ts, map.ts тощо.
Причина: традиційно для багатьох команд JS.
Коли файл експортує компонент, а ваша структура (як-от React) хоче, щоб компонент був застосований до PascalCased, використовуйте назву файлу регістра pascal, щоб відповідати, наприклад, Accordion.tsx, MyControl.tsx.
Причина: допомагає забезпечити послідовність і те, що робить екосистема.
type vs. interface
Використовуйте
type, коли вам може знадобитися об'єднання або intersection:
type Foo = number | { someProperty: number }
interface Foo { foo: string; } interface FooBar extends Foo { bar: string; } class X implements FooBar { foo: string; bar: string; }
Last updated