Ceux-ci indiquent génériques . testfunc<T>(s){ return s; }
signifie que testfunc
accepte un paramètre de type générique T
. testfunc<boolean>(4)
fournit un argument de type ( boolean
) pour ce paramètre de type. Dans cet exemple, cela ne fait pas grand-chose puisque testfunc
n'utilise pas T
mais réfléchissez :
function foo(arg: string) {
let numbers: Array<number> = [];
numbers[0] = arg; // Error: Type 'string' is not assignable to type 'number'.
}
Qui déclare numbers
comme un tableau de number
. Puisque arg
est une chaîne de caractères, vous ne pouvez pas faire numbers[0] = arg
.
Comparez avec :
function foo<T>(arg: T) {
let numbers: Array<T> = [];
numbers[0] = arg; // Error
}
Maintenant, foo
ne sait pas ce que numbers
contient, juste que ce qu'il contient correspondra au type de arg
. Ces deux appels sont donc valables :
foo<number>(4);
foo<string>("bar");
J'ai inclus les arguments de type dans ces appels pour les mettre en évidence, mais TypeScript peut les déduire la plupart du temps :
foo(4);
foo("bar");