3 votes

Quelle est l'utilité des parenthèses angulaires comme methodname<string>() dans le type de script ?

Pouvez-vous s'il vous plaît m'aider s'il y a un tutoriel sur elle pourquoi nous utilisons les parenthèses angulaires <> dans le type script par exemple j'ai donné un certain code ici j'ai besoin d'explication.

export class HomePage {

     constructor(public navCtrl: NavController) {
         let a = this.testfunc<boolean>(4);
         console.log(a);
     }

     testfunc<T>(s) {
         return s;
     }
}

Merci

5voto

T.J. Crowder Points 285826

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");

2voto

John Kennedy Points 2490

Ces crochets angulaires sont connus sous le nom de génériques. Les génériques vous permettent de définir des caractères génériques pour le type de champs, de méthodes d'une classe.
Il permet simplement de définir le type à un moment ultérieur.

export class HomePage {
    constructor(public navCtrl: NavController) {
    let a = this.testfunc<boolean>(4);
    console.log(a);
}

    testfunc<T>(s){
         return s;
    }
}

Pour votre testFunc vous créez simplement une méthode qui peut accepter n'importe quel type de données. Cela signifie que T entre les parenthèses angulaires est appelé un argument de type.

L'utilisation de génériques vous donne une sorte de liberté que vous n'avez pas autrement. Par exemple, avec une méthode générique, je peux passer n'importe quel type comme argument de type.

function Rand(value : T) { ... }

Réglage de T en tant que string signifierait que chaque T dans cette fonction devrait être une chaîne de caractères, de même pour les autres types.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X