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?

Ma Jerez
la source

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.)

Robert Penner
la source
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();
Jeroen
la source
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}`
Nehal Damania
la source
5

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

var page_number: number = 3;
window.location.hash = page_number.toString(); 
Raneshu
la source
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

Anant Raj
la source
-4

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

window.location.hash = +page_number;
Bettaibi Nidhal
la source
4
+lance au numéro
doup
1
Besoin de convertir un nombre en chaîne
Nick Gallimore