Ответ 1
"Кастинг" отличается от преобразования. В этом случае window.location.hash
будет автоматически преобразовывать число в строку. Но чтобы избежать ошибки компиляции TypeScript, вы можете выполнить преобразование строк самостоятельно:
window.location.hash = ""+page_number;
window.location.hash = String(page_number);
Эти преобразования идеальны, если вы не хотите, чтобы возникала ошибка, если page_number
- null
или undefined
. Если page_number.toString()
и page_number.toLocaleString()
будут бросать, когда page_number
равно null
или undefined
.
Когда вам нужно всего лишь отбрасывать, а не конвертировать, это как передать строку в TypeScript:
window.location.hash = <string>page_number;
// or
window.location.hash = page_number as string;
Аннотации <string>
или as string
сообщают компилятору TypeScript обрабатывать page_number
как строку во время компиляции; он не конвертируется во время выполнения.
Однако компилятор будет жаловаться на то, что вы не можете присвоить номер строке. Вы должны сначала наложить на <any>
, затем на <string>
:
window.location.hash = <string><any>page_number;
// or
window.location.hash = page_number as any as string;
Так что проще просто преобразовать, который обрабатывает тип во время выполнения и время компиляции:
window.location.hash = String(page_number);
(Спасибо @RuslanPolutsygan за то, что он поймал проблему с номером номера строки.)