Conversion d'un nombre en chaîne dans TypeScript


175

Quelle est la meilleure façon (s'il y en a une) de convertir un nombre en chaîne dans Typescript?

var page_number:number = 3;
window.location.hash = page_number; 

Dans ce cas, le compilateur renvoie l'erreur:

Le type «nombre» ne peut pas être affecté au type «chaîne»

Parce que location.hashc'est une chaîne.

window.location.hash = ""+page_number; //casting using "" literal
window.location.hash = String(number); //casting creating using the String() function

Alors, quelle méthode est la meilleure?

Réponses:


294

La "diffusion" est différente de la conversion. Dans ce cas, window.location.hashconvertira automatiquement un nombre en chaîne. Mais pour éviter une erreur de compilation TypeScript, vous pouvez effectuer vous-même la conversion de chaîne:

window.location.hash = ""+page_number; 
window.location.hash = String(page_number); 

Ces conversions sont idéales si vous ne souhaitez pas qu'une erreur soit générée lorsque page_numberest nullou undefined. Alors que page_number.toString()et page_number.toLocaleString()lancera quand page_numberest nullou undefined.

Lorsque vous avez seulement besoin de convertir, et non de convertir, voici comment convertir une chaîne dans TypeScript:

window.location.hash = <string>page_number; 
// or 
window.location.hash = page_number as string;

Les annotations <string>ou as stringcast indiquent au compilateur TypeScript de traiter page_numbercomme une chaîne au moment de la compilation; il ne convertit pas au moment de l'exécution.

Cependant, le compilateur se plaindra que vous ne pouvez pas attribuer un numéro à une chaîne. Vous devrez d'abord lancer <any>, puis vers <string>:

window.location.hash = <string><any>page_number;
// or
window.location.hash = page_number as any as string;

Il est donc plus facile de simplement convertir, qui gère le type au moment de l'exécution et à la compilation:

window.location.hash = String(page_number); 

(Merci à @RuslanPolutsygan pour avoir attrapé le problème de conversion des numéros de chaîne.)


1
Attention, si page_numberest nullcela mis window.location.hashà la chaîne * "null". (Je préfère une erreur: D).
Jeroen

Si vous ne voulez pas que le compilateur se plaint, dites simplementwindow.location.hash = <any>page_number;
Mouneer

1
En utilisant la conversion ( par exemple. String(page_number)) Plutôt que la coulée est nécessaire lorsque vous voulez utiliser des Stringméthodes, comme toLowerCase().
EricRobertBrewer

31

Utilisez simplement toStringou toLocaleStringje dirais. Alors:

var page_number:number = 3;
window.location.hash = page_number.toLocaleString();

Ceux-ci lancent une erreur si page_numberest nullou undefined. Si vous ne le souhaitez pas, vous pouvez choisir le correctif adapté à votre situation:

// Fix 1:
window.location.hash = (page_number || 1).toLocaleString();

// Fix 2a:
window.location.hash = !page_number ? "1" page_number.toLocaleString();

// Fix 2b (allows page_number to be zero):
window.location.hash = (page_number !== 0 && !page_number) ? "1" page_number.toLocaleString();

N'utilisez pas toLocaleString pour les grands nombres car il ajoute des virgules comme une devise. Cela détruira les identifiants.
Obaid

7

On peut également utiliser la syntaxe suivante en typographie. Notez le backtick "` "

window.location.hash = `${page_number}`

5

window.location.hash est un string, alors faites ceci:

var page_number: number = 3;
window.location.hash = page_number.toString(); 

0

const numéro_page = 3;

window.location.hash = numéro_page sous forme de chaîne; // Erreur

"La conversion du type 'nombre' en type 'chaîne' peut être une erreur car aucun des deux types ne chevauche suffisamment l'autre. Si cela était intentionnel, convertissez d'abord l'expression en 'inconnu'." -> Vous obtiendrez cette erreur si vous essayez de taper le nombre en chaîne. Alors, convertissez-le d'abord en inconnu, puis en chaîne.

window.location.hash = (numéro_page inconnu) sous forme de chaîne; // Bonne manière


-4

Utilisez le symbole «+» pour convertir une chaîne en un nombre.

window.location.hash = +page_number;

4
+lance au numéro
doup

1
Besoin de convertir un nombre en chaîne
Nick Gallimore
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.