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>

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.

Éditer cette page sur GitHub

Dernière modification le 25/11/2024 à 0h07