Приведение числа к строке в 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

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

5 73

5 ответов:

"литье" отличается от преобразования. В этом случае 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.

когда вам нужно только бросить, а не конвертировать, это как бросить в строка в машинописном тексте:

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

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

просто использовать 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();

используйте символ " + "для приведения.

window.location.hash = +page_number;

можно также использовать следующий синтаксис в typescript. Обратите внимание на Апостроф " ` "

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