TypeScriptTypes de base

Types de fonctions

Typer les paramètres, la valeur de retour et les fonctions elles-mêmes en tant que valeurs.

Sur cette page

Exemple

#
TypeScript
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))
Résultat
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

#
Syntaxe
function name(param: type, optional?: type): returnType { … }
type Fn = (param: type) => returnType

Plus d’exemples

#
Un type de fonction comme paramètre
TypeScript
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]))
Résultat
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

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.