"Casting" è diverso dalla conversione. In questo caso, window.location.hash
convertirà automaticamente un numero in una stringa. Ma per evitare un errore tipografico di compilazione, si può fare la conversione della stringa da soli:
window.location.hash = ""+page_number;
window.location.hash = String(page_number);
valori di conversione sono l'ideale se non si vuole un errore di essere gettato quando page_number
è null
o undefined
. Mentre page_number.toString()
e page_number.toLocaleString()
vengono generati quando page_number
è null
o undefined
.
quando avete solo bisogno di lanciare, non convertire, questo è come lanciare una stringa a macchina:
window.location.hash = <string>page_number;
// or
window.location.hash = page_number as string;
I <string>
o as string
annotazioni del cast dire al compilatore dattiloscritto per trattare page_number
come una stringa in fase di compilazione tempo; non converte in fase di esecuzione.
Tuttavia, il compilatore si lamenterà che non è possibile assegnare un numero a una stringa. Si dovrà prima cast <any>
, poi a <string>
:
window.location.hash = <string><any>page_number;
// or
window.location.hash = page_number as any as string;
Così è più facile da convertire solo, che gestisce il tipo in fase di esecuzione e di compilazione:
window.location.hash = String(page_number);
(grazie a @RuslanPolutsygan per rilevare il problema relativo al numero di stringhe.)
fonte
2015-09-16 11:43:14
sto ottenendo "Errore: (23, 32) TS2352: Nessuno dei due tipi 'numero' né digitare 'stringa' è assegnabile per l'altro". –
Attenzione, se 'page_number' è' null' questo imposterà 'window.location.hash' a * la stringa' "null" '. (Preferirei un errore: D). – Jeroen
Grazie a @RuslanPolutsygan, ho aggiornato la mia risposta per trasmettere a prima. –