Руководство
Основы
- Установка
- Введение
- Экземпляр Vue
- Синтаксис шаблонов
- Вычисляемые свойства и слежение
- Работа с классами и стилями
- Условная отрисовка
- Отрисовка списков
- Обработка событий
- Работа с формами
- Основы компонентов
Продвинутые компоненты
- Регистрация компонентов
- Входные параметры
- Пользовательские события
- Слоты
- Динамические и асинхронные компоненты
- Обработка крайних случаев
Переходы и анимации
- Анимирование списков и появления/исчезновения
- Анимирование переходов между состояниями
Переиспользование и композиция
- Примеси
- Пользовательские директивы
- Render-функции и JSX
- Плагины
- Фильтры
Инструментарий
- Однофайловые компоненты
- Тестирование
- Поддержка TypeScript
- Публикация на production
Масштабирование
- Роутинг
- Управление состоянием приложения
- SSR. Отрисовка на стороне сервера
- Безопасность
Продвинутые темы
- Подробно о реактивности
Вопросы миграции
- Миграция с Vue 1.x
- Миграция с Vue Router 0.7.x
- Миграция с Vuex 0.6.x на 1.0
Мета
- Сравнение с другими фреймворками
- Присоединяйтесь к сообществу Vue.js!
- Познакомьтесь с командой
Эта документация для версий v2.x и ранее. Для v3.x, документация на русском здесь.
Поддержка TypeScript
Vue CLI предоставляет встроенную поддержку TypeScript.
Официальные файлы объявлений в npm-пакетах
Статическая типизация может предотвратить много потенциальных ошибок ещё на этапе компиляции, особенно при разрастании приложений. По этой причине Vue поставляется с официальными файлами объявления типов TypeScript, причём не только для ядра Vue, но также и для Vue Router и Vuex.
Так как всё это уже опубликовано на npm, то вам даже не понадобится использовать внешние инструменты, такие как Typings
, потому что объявления типов автоматически импортируются вместе с Vue.
Рекомендуемая конфигурация
|
Обратите внимание, вы должны включить strict: true
(или, по крайней мере, noImplicitThis: true
, которая является частью флага strict
), чтобы использовать проверку типов у this
в методах компонентов, иначе он всегда будет рассматриваться как тип any
.
Смотрите также документацию по настройке компилятора TypeScript.
Инструменты разработки
Создание проекта
Vue CLI 3 позволяет генерировать новые проекты, которые используют TypeScript. Чтобы начать:
|
Поддержка редакторов
Для разработки приложений Vue с использованием TypeScript мы настоятельно рекомендуем использовать Visual Studio Code, которая предоставляет отличную встроенную поддержку для TypeScript. Если вы используете однофайловые компоненты, воспользуйтесь отличным расширением Vetur, которое обеспечивает вывод TypeScript внутри однофайловых компонентов и многие другие возможности.
WebStorm также предоставляет встроенную поддержку для TypeScript и Vue.
Использование
Чтобы позволить TypeScript правильно выводить типы внутри опций компонента Vue, вам необходимо определять компоненты с помощью Vue.component
или Vue.extend
:
|
Компоненты Vue на основе классов
Если вы предпочитаете API на основе классов при объявлении компонентов, вы можете использовать официально поддерживаемый декоратор vue-class-component:
|
Расширение типов для использования с плагинами
Плагины могут добавлять во Vue новые глобальные свойства, свойства экземпляра и параметры компонента. В этих случаях необходимы объявления типов для возможности плагина компилироваться в TypeScript. К счастью, есть функция TypeScript для расширения существующих типов, называемая расширением модуля (module augmentation).
Например, чтобы объявить свойство экземпляра $myProperty
с типом string
:
|
После включения указанного выше кода в файл объявлений (например, my-property.d.ts
) в вашем проекте, вы можете использовать $myProperty
в экземпляре Vue.
|
Вы также можете объявить дополнительные глобальные свойства и параметры компонента:
|
Указанные выше объявления позволяют скомпилировать следующий код:
|
Аннотации возвращаемых типов
TypeScript может столкнуться с трудностями при определении типов определённых методов из-за циклической природы файлов Vue с объявлением типов. По этой причине вам может потребоваться аннотировать возвращаемый тип для методов, таких как render
и тех, которые находятся в computed
.
|
Если вы обнаружите, что вывод типа или автодополнение не работают, аннотация некоторых методов может помочь решить эти проблемы. Использование опции --noImplicitAny
поможет найти многие из этих методов без аннотаций.
Аннотация типов входных параметров
|
Если функция валидатора не получает выведенный тип или не работает автоподстановка свойств, то аннотация аргумента с ожидаемым типом может помочь решить эти проблемы.