Types utilitaires
Liste des types utilitaires et des enums.
Types utilitaires
Références
Vous pouvez typer les références que vous avez créé sur vos composants en utilisant le type Refs
.
Par exemple, pour typer une référence à un formulaire :
<template>
<form ref="form">
…
</form>
</template>
<script lang="ts">
import Vue from 'vue';
import Component from 'vue-class-component';
import { Refs } from '@cnamts/vue-dot/src/types';
@Component
export default class UserForm extends Vue {
$refs!: Refs<{
form: HTMLFormElement;
}>;
}
</script>
Formulaires Vuetify
Vous pouvez utiliser l’interface VForm
pour typer une référence à ce composant :
<template>
<VForm ref="form">
…
</VForm>
</template>
<script lang="ts">
import Vue from 'vue';
import Component from 'vue-class-component';
import { Refs, VForm } from '@cnamts/vue-dot/src/types';
@Component
export default class UserForm extends Vue {
$refs!: Refs<{
form: VForm;
}>;
}
</script>
Cette interface définit les méthodes validate
, reset
et resetValidation
du composant VForm
.
Vue Input Facade
Vous pouvez utiliser l’interface InputFacadeEvent
pour typer un événement émit en utilisant la directive :
<template>
<VTextField
v-facade="mask"
@input.native="setInternalValue"
/>
</template>
<script lang="ts">
import Vue from 'vue';
import Component from 'vue-class-component';
import { InputFacadeEvent } from '@cnamts/vue-dot/src/types';
@Component
export default class CustomField extends Vue {
internalValue: string | null = null;
setInternalValue(event: InputFacadeEvent): void {
this.internalValue = event.target?.unmaskedValue ?? null;
}
}
</script>
Le modificateur native
permet de récupérer l’événement natif émit, qui contient la propriété unmaskedValue
.
Objet avec un type d’index
Vous pouvez utiliser le type IndexedObject
pour typer un objet et définir le type de sa clé.
Par exemple, avec l’objet suivant :
const colorMapping = {
white: '#fff',
black: '#000'
};
Si l’on essaie de récupérer une valeur de l’objet avec une variable pour la clé :
const selectedColor: string = 'white';
const color = colorMapping[selectedColor]; // Erreur 7053
Le compilateur TypeScript retournera une erreur car, par défaut, il n’est pas possible de récupérer une valeur de l’objet avec une clé de type string
.
Le type IndexedObject
permet de résoudre ce problème en autorisant d’utiliser une clé de type string
:
import { IndexedObject } from '@cnamts/vue-dot/src/types';
const colorMapping: IndexedObject = {
white: '#fff',
black: '#000'
};
const selectedColor: string = 'white';
const color = colorMapping[selectedColor]; // Pas d'erreur
Argument typé
Vous pouvez également modifier le type de valeur en le spécifiant en paramètre :
import { IndexedObject } from '@cnamts/vue-dot/src/types';
const sizeMapping: IndexedObject<number> = {
small: 96,
large: 1024
};
const selectedSize: string = 'small';
const size = sizeMapping[selectedSize]; // Pas d'erreur
Enums
Gestion d’état
Vous pouvez utiliser l’enum StateEnum
pour créer une variable de gestion d’état :
import { StateEnum } from '@cnamts/vue-dot/src/constants/enums/StateEnum';
import { postForm } from '@/services/postForm/api';
const state: StateEnum = StateEnum.IDLE;
async function sendForm(): Promise<void> {
state = StateEnum.PENDING;
try {
await postForm({
// …
});
state = StateEnum.RESOLVED;
} catch {
state = StateEnum.REJECTED;
}
}
Ancienne syntaxe
L’ancienne syntaxe de l’enum est toujours disponible, mais est dépréciée.