Why TypeScript
Чому TypeScript?
Існує два головних бонуса TypeScript:
Надає систему типів optional type system для JavaScript.
Надає функціональность, яка буде втілена JavaScript в наступних версіях на основі сучасного JavaScript
Ці бонуси повинні мотивувати вас на навчання.
The TypeScript type system
Система типів в TypeScript
Ви можете бути здивовані "Навіщо додавати типи в JavaScript?"
Використання типізації може суттєво покращити якість вашего коду та зробити його набагато стабільним. Великі команди (Google, Microsoft, Facebook) постійно приходили до цього висновку. Зокрема:
Типи підвищують вашу спритність під час виконання рефакторингу. Для компілятора краще виловлювати помилки, ніж мати збій під час виконання.
Типізація це одна з найкращих форм створення документації які існують. Сигнатура функції — це теорема, а тіло функції — доказ.
Однак типи мають манеру бути надмірно церемоніальними. TypeScript робить бар’єр входу якомога нижче. Ось як:
Your JavaScript is TypeScript
Ваш JavaScript це TypeScript.
TypeScript забезпечує безпеку типу під час компіляції для вашого коду JavaScript. Це не дивно, враховуючи його назву. Чудово те, що типи абсолютно необов’язкові. Ваш JavaScript код в файлі .js
може бути перетворений на файл .ts
и TypeScript зможе повернути вам все ще коректний .js
еквівалент початкового JavaScript файла. TypeScript це новий поверх над JavaScript з опціональною перевіркою типів.
Types can be Implicit
Типи можуть бути неявними.
TypeScript намагатиметься вивести якомога більше інформації про тип, щоб забезпечити вам безпеку типу з мінімальними витратами продуктивності під час розробки коду. Наприклад, цей приклад TypeScript знає, що "foo" має тип number
та поверне помилку:
Така поведінка є досить корисною. Якщо ви робите щось, як показано в цьому прикладі, тоді в решті вашого коду, ви не можете бути впевнені foo
є number
чи string
. Ця проблема більш типова для проекту з великою кількістю файлів. Більш детально ми зануримося в цю тему далі.
Types can be Explicit
Типи можуть бути неявними.
Як ми відмітили раніше, TypeScript намагається зробити код найбільш безпечним. Однак ви можете використовувати анотації, щоб:
Допомогти компілятору та, що важливіше, задокументуйте матеріал для наступного розробника, який має прочитати ваш код (це, можливо, будете і ви в майбутньому!).
Забезпечити те, що компілятор бачить, те, що ви думали, що він повинен бачити. Тобто ваше розуміння коду відповідає алгоритмічному аналізу коду (здійсненому компілятором).
TypeScript використовує анотації типів постфіксів, популярні в інших опціонально анотованих мовах (наприклад, ActionScript і F#).
Якщо ви робите щось не вірно, компілятор видать помилку:
Ми обговоримо всі деталі синтаксісу анатацій, які підтримує TypeScript в наступних главах.
Types are structural
Типи є структурними.
Type errors do not prevent JavaScript emit
Помилки типу не перешкоджають роботі JavaScript.
Щоб вам було легше перенести ваш код JavaScript на TypeScript, навіть якщо є помилки компіляції, за замовчуванням TypeScript видасть дійсний JavaScript в найкращому можливому варіанті.
буде конвертовано в працюючий js:
Тож ви можете поступово оновлювати свій код JavaScript до TypeScript. Це дуже відрізняється від роботи багатьох компіляторів інших мов і є ще однією причиною переходу на TypeScript.
Types can be ambient
Файл визначення вже існує.
Або, принаймні, у вас є широкий список добре перевірених шаблонів декларацій TypeScript, які вже доступні
Як швидкий фікс ви можете сказати TypeScript що це є дещо з назвою $
:
Якщо ви хочете, ви можете спиратися на це базове визначення та надати більше інформації, яка допоможе захистити вас від помилок:
Ми детально обговоримо деталі створення визначень TypeScript для існуючого JavaScript пізніше, коли ви дізнаєтесь більше про TypeScript (наприклад, такі речі, як interface
і any
).
Future JavaScript => Now
Майбутній JavaScript => Зараз.
TypeScript надає низку функцій, запланованих у ES6 для поточних механізмів JavaScript (які підтримують лише ES5 тощо). Команда TypeScript активно додає ці функції, і цей список з часом лише розширюватиметься, і ми розглянемо це у окремому розділі. Але як зразок ось приклад класу:
та він підтримує виконистання функції-стрілки:
Summary
У цьому розділі ми надали вам мотивацію та цілі розробки TypeScript. Подолавши це, ми можемо копатися в дрібницях TypeScript. [](Interfaces are open ended) [](Type Inference rules) [](Cover all the annotations) [](Cover all ambients : also that there are no runtime enforcement) [](.ts vs. .d.ts)
Last updated