StyleGuide
Last updated
Last updated
Неофіційний посібник зі стилю TypeScript
Люди запитували мене про мою думку щодо цього. Особисто я не дуже наполягаю на дотриманні цього в своїх командах і проектах, але це допомагає згадувати про це як тай-брейк, коли хтось відчуває потребу мати таку послідовність. Є інші речі, щодо яких я відчуваю набагато більше, і вони описані в (наприклад, твердження типу погане, налаштування властивостей погане) 🌹.
Ключові розділи:
Використовуйте camelCase
для імен змінних і функцій
Причина: звичайний JavaScript
Bad
Good
Використовуйте PascalCase
для імен класів.
Причина: це насправді досить традиційно для стандартного JavaScript.
Bad
Good
Використовуйте camelCase
членів класу та методів
Причина: природно випливає з умов іменування змінних і функцій.
Bad
Good
Використовуйте PascalCase
для імені.
Причина: Подібно до класу
Використовуйте camelCase
для членів.
Причина: Подібно до класу
Не вживайте префікс I
Причина: нетрадиційне.
lib.d.ts
визначає важливі інтерфейси безI
(наприклад, Window, Document тощо).
Bad
Good
Використовуйте PascalCase
для імені.
Причина: Подібно до класу
Використовуйте camelCase
для учасників.
Причина: Подібно до класу
Використовуйте PascalCase
для імен
Причина: Конвенція, яку дотримується команда TypeScript. Простори імен фактично є просто класом зі статичними членами. Імена класів:
PascalCase
=> Імена простору імен:PascalCase
Bad
Good
Використовуйте PascalCase
для імен enum
Причина: Подібно до класу. Є типом.
Bad
Good
Використовуйте PascalCase
для члена enum
Причина: Конвенція, якої дотримується команда TypeScript, тобто розробники мови, наприклад
SyntaxKind.StringLiteral
. Також допомагає з перекладом (генерацією коду) інших мов на TypeScript.
Bad
Good
Бажано не використовувати жоден із них у разі явної недоступності
Причина: ці значення зазвичай використовуються для підтримки узгодженої структури між значеннями. У TypeScript ви використовуєте types для позначення структури
Bad
Good
Загалом використовуйте undefined
(замість цього подумайте про повернення об’єкта на зразок {valid:boolean, value?:Foo}
)
Bad
Good
Використовуйте null
, якщо це частина API або домовленість
Причина: це традиційно в Node.js, напр.
error
має значенняnull
для зворотних викликів у стилі NodeBack.
Bad
Good
Використовуйте правдиву перевірку для того, для об’єктів null
or undefined
Bad
Good
Використовуйте == null
/ != null
(а не ===
/ !==
), щоб перевірити наявність null
/ undefined
на примітивах, оскільки це працює як для null
/undefined
, але не інші помилкові значення (наприклад, ''
, 0
, false
), напр.
Bad
Good
Компілятор TypeScript постачається з дуже гарною мовною службою форматування. Незалежно від результату, який він дає за замовчуванням, достатньо, щоб зменшити когнітивне перевантаження команди.
приклади:
Надавати перевагу одинарним лапкам ('
), якщо не використовувати екранування.
Подвійні лапки не без переваг: дозволяють легше копіювати вставляти об’єкти в JSON. Дозволяє людям використовувати інші мови для роботи без зміни символу цитати. Дозволяє використовувати апостроф, напр.
He's not going.
. Але я не хочу відхилятися від того, що спільнота JS вирішила справедливо.
Якщо ви не можете використовувати подвійні лапки, спробуйте використовувати зворотні галочки (`).
Причина: вони зазвичай представляють намір досить складних рядків.
Використовуйте два пробіли, не табуляцію.
Використовуйте крапку з комою.
Анотуйте масиви як foos: Foo[]
замість foos: Array<Foo>
.
Причини: легше читати. Він використовується командою TypeScript. Полегшує пізнання того, що щось є масивом, оскільки розум навчений виявляти
[]
.
Назвіть файли за допомогою camelCase
. наприклад utils.ts
, map.ts
тощо.
Причина: традиційно для багатьох команд JS.
Коли файл експортує компонент, а ваша структура (як-от React) хоче, щоб компонент був застосований до PascalCased, використовуйте назву файлу регістра pascal, щоб відповідати, наприклад, Accordion.tsx
, MyControl.tsx
.
Причина: допомагає забезпечити послідовність і те, що робить екосистема.
Використовуйте 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; }
Використовуйте , щоб автоматично форматувати свій код у командному рядку. Крім того, ваша IDE (atom/vscode/vs/sublime) уже має вбудовану підтримку форматування.
Причина: це робить більше команд JavaScript (наприклад, , , [npm](https: //github.com/npm/npm), , , ). Це легше друкувати (на більшості клавіатур не потрібен зсув).
Причина: це робить більше команд JavaScript (наприклад, , , , , , , ). Команди TypeScript/VSCode використовують 4 пробіли, але, безперечно, є винятком у екосистемі.
Причини: явні крапки з комою допомагають інструментам форматування мови давати послідовні результати. Відсутній ASI (автоматична вставка крапки з комою) може призвести до помилок, напр. foo() \n (function(){})
буде одним оператором (а не двома). TC39 . Приклади команд: , , [google/angular](https://github .com/angular/angular/), , .