Il n'y a absolument aucune différence de performances tout en utilisant une de ces méthodes, parce que toutes ces choses de fantaisie sont juste Typescript
sucres, et est seulement pour le développement.
Tous les type de vérification est seulement au moment de la compilation ( lorsque la Machine est transpiling/transformation de votre code de retour à la normale javascript dans votre serveur ).
De toute façon, lorsque votre code est envoyé au navigateur de l'utilisateur, c'est à quoi il ressemble :
function identity(arg){
return arg;
}
Mais pour expliquer les différences :
Lors de l'utilisation d' any
vous perdrez tous type de vérification et de vérification de la sécurité que Tapuscrit est d'offrir, alors que, T
se comporte comme une variable qui va contenir le Type que vous ne savez pas ce que ça va être.
Donc
function identity<T>(arg: T): T {
return arg;
}
Ci-dessus, nous savons que si l' identify
accepte number
, il sera de retour number
et ainsi de suite, où que :
function identity(arg: any): any {
return arg;
}
Mais maintenant, vous ne savez pas si arg
et de la returned
de la valeur du même type ou non.
L'autre question qu' T
permettra de résoudre, c'est quand vous êtes en train de créer une méthode à l'intérieur d'une classe et il attend un argument qui vous voulez vous assurer que cette méthode ne pourra accepter des arguments du même type de constructeur de la classe de l'argument lorsqu'il est instancié.
export class MyClass<T>{
myMethod(anotherArg:T){}
}
Donc, en utilisant ci-dessus :
let str = "string";
let instance = new MyClass(str);
instance.myMethod("other string") // will compile
Où que :
let num = 32423423;
let instance = new MyClass(num);
instance.myMethod("other string") // won't compile