Lewati ke konten utama

๐Ÿง  Integrasi TypeScript dengan Vue.js

TypeScript adalah superset dari JavaScript yang menyediakan static typing. Dengan TypeScript, kamu bisa menulis kode Vue yang lebih aman, terstruktur, dan lebih mudah di-refactor dalam proyek besar.


๐Ÿš€ 1. Buat Proyek Vue + TypeScriptโ€‹

a. Vue CLIโ€‹

vue create my-vue-ts-app

Saat diminta preset, pilih: โžก๏ธ Manually select features โžก๏ธ Centang TypeScript

b. Vite (Vue 3 + TypeScript)โ€‹

npm create vite@latest my-vue-ts-app -- --template vue-ts
cd my-vue-ts-app
npm install
npm run dev

๐Ÿ“ฆ 2. Struktur Dasar File TypeScriptโ€‹

src/
โ”œโ”€โ”€ main.ts
โ”œโ”€โ”€ components/
โ”‚ โ””โ”€โ”€ HelloWorld.vue
โ”œโ”€โ”€ shims-vue.d.ts
tsconfig.json

File .vue tetap ditulis seperti biasa, tapi script menggunakan lang="ts".


โœ๏ธ 3. Komponen dengan TypeScriptโ€‹

Contoh: HelloUser.vue

<template>
<p>Halo, {{ name }}</p>
</template>

<script lang="ts">
import { defineComponent } from 'vue';

export default defineComponent({
name: 'HelloUser',
props: {
name: {
type: String,
required: true
}
}
});
</script>

๐ŸŽฏ 4. Menggunakan Interfaceโ€‹

interface User {
id: number;
name: string;
}

export default defineComponent({
data() {
return {
user: {} as User
};
}
});

๐Ÿ“ƒ 5. shims-vue.d.tsโ€‹

Agar TypeScript mengenali file .vue, buat file src/shims-vue.d.ts:

declare module '*.vue' {
import { DefineComponent } from 'vue';
const component: DefineComponent<{}, {}, any>;
export default component;
}

๐Ÿงช 6. Tools & Editor Supportโ€‹

  • Gunakan VS Code untuk IntelliSense dan linting otomatis

  • Aktifkan Volar (pengganti Vetur) untuk dukungan terbaik Vue 3 + TS

  • Integrasikan dengan ESLint dan Prettier untuk format otomatis


๐Ÿ› ๏ธ 7. Tips Best Practiceโ€‹

  • Gunakan defineComponent() di semua file .vue

  • Definisikan tipe untuk props, emits, dan refs

  • Gunakan composables (dengan setup()) untuk pemanfaatan maksimal TypeScript


๐ŸŒ 8. Integrasi Lanjutanโ€‹

  • Vuex + TS โ†’ Gunakan store modular dengan interface

  • Pinia + TS โ†’ Dukungan TypeScript bawaan & lebih mudah

  • Vue Router + TS โ†’ Tambahkan tipe ke param route & meta