TypeScript — это основной язык для разработки приложений Angular. Это надмножество JavaScript с поддержкой во время разработки для обеспечения безопасности типов и инструментов.
Браузеры не могут выполнять TypeScript напрямую. TypeScript должен быть «перенесен» в JavaScript с помощью компилятора tsc, что требует некоторой настройки.
В этом руководстве рассматриваются некоторые аспекты конфигурации TypeScript и среды TypeScript, которые важны для разработчиков Angular, включая подробности о следующие файлы:
- tsconfig.json-Конфигурация компилятора TypeScript.
- typings-Файлы объявления TypesScript.
tsconfig.json
Обычно вы добавляете файл конфигурации TypeScript с именем tsconfig.json в свой проект, чтобы направлять компилятор при создании файлов JavaScript.
В руководстве по установке используется следующий файл tsconfig.json:
`` `{" compilerOptions ": {" target ":" es5 "," module ":" commonjs "," moduleResolution ":" node "," sourceMap ": true," emitDecoratorMetadata ": true," experimentalDecorators ": true," lib ": [" es2015 "," dom "]," noImplicitAny " : true, "suppressImplicitAnyIndexErrors": true}} ``
Этот файл содержит параметры и флаги, которые необходимы для приложений Angular.
noImplicitAny и suppressImplicitAnyIndexErrors
Разработчики TypeScript не согласны с тем, должен ли флаг noImplicitAny быть истинным или ложь. Нет правильного ответа, и вы можете изменить флаг позже. Но ваш выбор теперь может иметь значение в более крупных проектах, поэтому он заслуживает обсуждения.
Когда флаг noImplicitAny равен false (по умолчанию), и если компилятор не может определить тип переменной на основе того, как он используется, компилятор автоматически устанавливает тип по умолчанию для любого. Это то, что подразумевается под неявным любым.
Установка в документации устанавливает для флага noImplicitAny значение true. Когда флаг noImplicitAny имеет значение true и компилятор TypeScript не может определить тип, он по-прежнему генерирует файлы JavaScript, но также сообщает об ошибке. Многие опытные разработчики предпочитают эту более строгую настройку, потому что проверка типов выявляет больше непреднамеренных ошибок во время компиляции.
Вы можете установить любой тип переменной, даже если флаг noImplicitAny имеет значение true.
Если флаг noImplicitAny равен true, вы также можете получить неявные ошибки индекса. Большинство разработчиков считают, что именно эта ошибка больше раздражает, чем помогает. Вы можете подавить их с помощью следующего дополнительного флага:
`` "suppressImplicitAnyIndexErrors": true ``
Документация setup также устанавливает этот флаг в значение true.
Типы TypeScript
Многие библиотеки JavaScript, такие как jQuery, библиотека тестирования Jasmine и Angular, расширяют среду JavaScript с помощью функции и синтаксис, которые компилятор TypeScript не распознает изначально. Когда компилятор что-то не распознает, он выдает ошибку.
Используйте файлы определения типа TypeScript -d.ts files, чтобы сообщить компилятору о загружаемых вами библиотеках.
Редакторы, поддерживающие TypeScript, используют эти же файлы определений для отображения информации о типах функций библиотеки.
Многие библиотеки включают файлы определений в свои пакеты npm, где компилятор TypeScript и редакторы могут их найти. Angular — одна из таких библиотек. Папка node_modules/@ angular/core/любого приложения Angular содержит несколько файлов d.ts, которые описывают части Angular.
Вам не нужно ничего делать, чтобы получить файлы типизации для пакетов библиотеки, которые включают d. ts файлы. Пакеты Angular уже включают их.
lib.d.ts
TypeScript включает специальный файл объявлений с именем lib.d.ts . Этот файл содержит внешние объявления для различных общих конструкций JavaScript, присутствующих во время выполнения JavaScript и DOM.
На основе —target TypeScript добавляет дополнительные внешние объявления, такие как Promise, если целью является es6.
Поскольку QuickStart нацелен на es5, вы можете переопределить список включаемых файлов объявлений:
"lib": ["es2015", " dom "]
Благодаря этому у вас есть все типы типизации es6 даже при ориентации на es5.
Устанавливаемые файлы типизации
Многие библиотеки, среди которых jQuery, Jasmine и Lodash, не включают файлы d.ts в свои пакеты npm. К счастью, их авторы или участники сообщества создали отдельные файлы d.ts для этих библиотек и опубликовали их в хорошо известных местах.
Вы можете установить эти типы через npm, используя @ types/* scoped package и Typescript, начиная с версии 2.0, автоматически распознают их.
Например, чтобы установить типизацию для jasmine, вы можете выполнить npm install @ types/jasmine —save-dev.
QuickStart определяет два типа файлов, или d.ts, файлов:
- jasmine typings для тестовой среды Jasmine.
- узел для кода, который ссылается на объекты в среде Node.js®;
QuickStart не требует такой типизации, но многие примеры требуют.
target
По умолчанию целью является es5, вы можете настроить цель на es6, если вы хотите развернуть приложение только в es6-совместимом браузере. Но если вы настроите цель на es6 в каком-нибудь старом браузере, таком как IE, будет выдана синтаксическая ошибка.