Je suis assez nouveau pour TypeScript. J'ai commencé avec un livre intitulé TypeScript Revealed (Pub Feb.2013). Au chapitre 2, vous trouverez une section intitulée "Distribution" qui présente l'exemple suivant:
var a : int = <int>SomeNumberAsAString;
J'ai essayé d'appliquer l'exemple, comme suit:
var SomeNumberAsAString = "1000";
var a: int = <int>SomeNumberAsAString;
Mais le compilateur m'a donné une erreur:
hello.ts (2,8): erreur TS2304: impossible de trouver le nom 'int'.
hello.ts (2,15): erreur TS2304: impossible de trouver le nom 'int'.
Je me demande comment faire cette distribution, ou la spécification de TypeScript a-t-elle changé?
(Pub fév.2013)
Ce livre est old. Son appelé number
maintenant.
var SomeNumberAsAString = "1000";
var a: number = <number><any>SomeNumberAsAString;
De plus, cette assertion est très dangereuse et je ne le ferais pas dans le code de production. Mais ça passe le message :)
Un chapitre de livre plus à jour sur les assertions: https://basarat.gitbooks.io/TypeScript/content/docs/types/type-assertion.html
J'ai lu la réponse de @ basarat et décidé d'afficher la mienne, car je suis fermement convaincue qu'il y a encore matière à explication.
Soyez averti, <number><any>
casting ne générera pas de nombre. En fait, cela permettra à votre code d'être compilé (vous passerez ainsi toutes les vérifications de frappe statiques), mais ce ne sera pas un nombre en javascript. Considérez cet extrait de code:
let str = "1000";
let a: number = <number><any>str;
let b: number = parseInt(str); //or just let b = parseInt(str)
console.log(typeof a); // string
console.log(typeof b); // number
Je peux difficilement imaginer des cas où a
- cas est bénéfique par rapport à b
- cas. J'irais simplement avec parseInt ou parseFloat ou Number, ce qui convient davantage. <T><any>
casting semble intelligent, mais vous devez être sûr à 100% de ce que vous êtes censé atteindre par cet idiome.
Et dans la plupart des cas, vous ne voulez probablement pas atteindre cet objectif)
Voici le le plus propre moyen de le faire.
const numberString = '1000';
const a: int = numberString as any;
Je préfère cette variante
let SomeNumberAsAString = '1000';
let a = +SomeNumberAsAString;
console.log(a);
const a: number = <number> +SomeNumberAsAString;
+SomeNumberAsAString
convertit la valeur de la chaîne en nombre.
<number>
avant +SomeNumberAsAString
indique au compilateur TypeScript qu'il est nécessaire de convertir le type de la valeur en type number
.