vue.js - Nuxt Typescript'te kendi tiplerimi nasıl oluşturabilirim?
Nuxt'te $_app kullandığımda, this üzerinde $_app mevcut değil diyor. $_app'i Nuxt tipi içinde kendi tipim olarak eklemek istiyorum. Şunu denedim:
import Vue from "vue"
interface AppMixin {
user: any
}
declare module "vue/types/vue" {
interface Vue {
$_app: AppMixin
}
}
Doğru olup olmadığını bilmiyorum. Bu kodu nereden içe aktaracağımı bile bilmiyorum. Lütfen yardım edin.
Cevap #1
İşte bunun çalıştığından emin olmak için adımlar.
Diyelim ki AppMixin türüne sahip $_app sağlamanız gerekiyor:
/**
* Extends interfaces in Vue.js
*/
import Vue from "vue"
interface AppMixin {
user: string
}
declare module "vue/types/vue" {
interface Vue {
$_app: AppMixin
}
}
Sonra, bu dosyayı doğru şekilde adlandırmanız gerekir: vue.d.ts ve bunu tsconfig.json içindeki include bölümüne dahil edilen yollarınızın içine koyun.
Genellikle projenin dizininde shims/ alt klasörü oluştururum, şöyle: https://github.com/wemake-services/wemake-vue-template/tree/master/template/client/shims
Ve onu düzgün bir şekilde şu şekilde yapılandırın: https://github.com/wemake-services/wemake-vue-template/blob/master/template/tsconfig.json#L43
Doğru yapılırsa, vue bileşenleriniz içindeki this.$_app.user çağrılarınızın string türü açığa çıkacaktır.
Belgeler
- TypeScript'te bildirim dosyaları: https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html
Vueörneği genişletme örneği: https://github.com/vuejs/vuex/blob/dev/types/vue.d.ts
