Подтвердить что ты не робот

Выделение числа в строку в TypeScript

Каков наилучший способ (если он есть) для перевода из числа в строку в Typescript?

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

В этом случае компилятор выдает ошибку:

Тип 'number' не присваивается типу 'string'

Потому что location.hash - это строка.

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

Итак, какой метод лучше?

4b9b3361

Ответ 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 за то, что он поймал проблему с номером номера строки.)

Ответ 2

Просто используйте toString или toLocaleString Я бы сказал. Итак:

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

Они вызывают ошибку, если page_number - null или undefined. Если вы не хотите, чтобы вы могли выбрать исправление, соответствующее вашей ситуации:

// 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();

Ответ 3

Используйте символ "+", чтобы привести строку к числу.

window.location.hash = +page_number;

Ответ 4

window.location.hash является string, поэтому сделайте это:

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

Ответ 5

Можно также использовать следующий синтаксис в машинописи. Обратите внимание на обратную черту "'"

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