Types de fonctions
Typer les paramètres, la valeur de retour et les fonctions elles-mêmes en tant que valeurs.
Exemple
#function formatPrice(amount: number, currency = '€', discount?: number): string {
const final = discount ? amount * (1 - discount) : amount
return `${final.toFixed(2)} ${currency}`
}
console.log(formatPrice(49))
console.log(formatPrice(100, '€', 0.2))49.00 € 80.00 €
Définition et utilisation
#Dans une fonction, vous typez les paramètres et, facultativement, la valeur de retour : function add(a: number, b: number): number. Avec strict activé, un paramètre sans type provoque une erreur, car il recevrait implicitement le type any.
Vous marquez les paramètres optionnels avec un point d’interrogation (title?: string), et vous donnez des valeurs par défaut comme en JavaScript (limit = 10). Le compilateur vérifie aussi le nombre d’arguments lors de l’appel.
Une fonction en tant que valeur se décrit par un type fléché : (value: string) => boolean. Un tel type est utile pour les fonctions de rappel, les gestionnaires d’événements et le passage de fonctions à des composants.
Syntaxe
#function name(param: type, optional?: type): returnType { … }
type Fn = (param: type) => returnTypePlus d’exemples
#type Validator = (value: string) => boolean
const isEmail: Validator = (value) => value.includes('@')
const notEmpty: Validator = (value) => value.trim().length > 0
function validate(value: string, rules: Validator[]): boolean {
return rules.every((rule) => rule(value))
}
console.log(validate('lea@codeworlds.fr', [notEmpty, isEmail]))
console.log(validate(' ', [notEmpty, isEmail]))true false
Bonnes pratiques
#- Il est utile d’écrire explicitement le type de retour des fonctions exportées. Cela protège contre un changement accidentel du contrat.
- Placez les paramètres optionnels à la fin de la liste.
Entrées associées
#- voidLe type renvoyé par les fonctions qui ne renvoient rien.
- Inférence de typeLe compilateur détermine automatiquement les types sans que vous écriviez d’annotations.
- Génériques <T>Types et fonctions avec un paramètre de type, qui fonctionnent pour plusieurs types sans perdre en précision.
- TuplesDes tableaux de longueur fixe où chaque position a son propre type.
- Surcharges de fonctionPlusieurs signatures pour une seule fonction : le type du résultat dépend des arguments avec lesquels vous l’appelez.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.