Для начала проекта на Quasar с TypeScript необходимо использовать
официальный CLI. Команда quasar create <имя-проекта>
предлагает выбор между JavaScript и TypeScript. При выборе TypeScript
автоматически создаются конфигурации для:
tsconfig.json – основной файл настроек компилятора
TypeScript..ts вместо .js для компонентов и
сервисов.@types/node,
@types/jest, vue-tsc).Пример команды:
quasar create my-app
# Выбираем TypeScript при выборе опций
После установки структура проекта будет включать директории
src/boot, src/components,
src/pages, где все новые файлы рекомендуют создавать с
расширением .ts или .vue с
<script lang="ts">.
Файл tsconfig.json содержит ключевые настройки
компиляции:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.vue", "src/**/*.d.ts"],
"exclude": ["node_modules"]
}
Ключевые моменты:
"strict": true активирует полный набор проверок
типов."paths" позволяет использовать алиасы типа
@/components/MyComponent.vue."jsx": "preserve" важен для корректной работы с Vue
JSX.Для проектов с Quasar рекомендуется добавить отдельный файл
shims-vue.d.ts:
declare module "*.vue" {
import { DefineComponent } from "vue";
const component: DefineComponent<{}, {}, any>;
export default component;
}
Он обеспечивает корректное распознавание .vue файлов
TypeScript.
Boot-файлы — это точка входа для инициализации плагинов и глобальных
настроек. Для TypeScript их создают с расширением .ts:
import { boot } from 'quasar/wrappers';
import axios from 'axios';
export default boot(({ app }) => {
app.config.globalProperties.$axios = axios;
});
При необходимости добавить типизацию:
import { App } from 'vue';
declare module '@vue/runtime-core' {
interface ComponentCustomProperties {
$axios: typeof axios;
}
}
Это позволяет использовать this.$axios внутри
компонентов с полной поддержкой TypeScript.
В .vue файлах используется синтаксис
<script lang="ts">:
<template>
<q-btn @click="increment" label="Нажми меня"/>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const count = ref<number>(0);
const increment = () => {
count.value++;
};
return { count, increment };
}
});
</script>
Особенности использования Quasar с TypeScript:
QBtn
уже типизирован.ref и reactive корректно работают с типами
TypeScript.defineComponent обеспечивает
автодополнение и строгую проверку типов.Для проектов с Quasar, использующих Vue Router, настройка типов важна:
import { RouteRecordRaw, createRouter, createWebHistory } from 'vue-router';
import Home from '../pages/Home.vue';
const routes: RouteRecordRaw[] = [
{ path: '/', component: Home }
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
Ключевые моменты:
RouteRecordRaw позволяет получать автодополнение
при добавлении маршрутов..vue корректно типизируются благодаря
shims-vue.d.ts.Для управления состоянием рекомендуется использовать Pinia с полным типизированием:
import { defineStore } from 'pinia';
export const useCounterStore = defineStore('counter', {
state: () => ({
count: 0 as number
}),
actions: {
increment() {
this.count++;
}
}
});
Преимущества TypeScript:
store.count и
store.increment() в компонентах.Quasar поддерживает ESLint для TypeScript через плагины:
npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin
Пример .eslintrc.js:
module.exports = {
parser: '@typescript-eslint/parser',
extends: [
'plugin:vue/vue3-recommended',
'plugin:@typescript-eslint/recommended'
],
rules: {
'@typescript-eslint/no-unused-vars': ['error']
}
};
Это позволяет поддерживать единый стиль кода и ловить ошибки на этапе разработки.
Quasar CLI автоматически поддерживает TypeScript:
quasar dev – компиляция и запуск с проверкой
типов.quasar build – сборка с учетом TypeScript.quasar inspect – позволяет проверить итоговую
конфигурацию Webpack для TypeScript.Рекомендация: включить флаг strict и
использовать vue-tsc --noEmit для проверки всех типов без
компиляции.
.ts или
<script lang="ts">.tsconfig.json и shims-vue.d.ts —
обязательные файлы для корректной работы TypeScript.Эта настройка обеспечивает безопасную разработку с автодополнением и проверкой типов на каждом уровне приложения Quasar.