TypeScript преобразование строки в число

кто-нибудь предлагает, как преобразовать строку в число в TypeScript?

var aNumber : number = "1"; // --> Error

// Could this be done?
var defaultValue = 0;
var aNumber : number = "1".toInt32(defaultValue);

// Or ..
var defaultValue = 0;
var aNumber : number = StringToInt("1", defaultValue);

обновление: Я сделал несколько дополнительных загадок, лучший софар, который я придумал: var aNumber: число = ( "1") * 1;

проверка, является ли строка числовой, отвечает здесь:в Typescript, Как проверить, является ли строка числовой.

7 ответов


можно использовать parseInt или parseFloat функции, или просто использовать унарный + оператор:

var x = "32";
var y = +x; // y: number

Typescript способ сделать это будет:

Number('1234') // 1234
Number('9BX9') // NaN

Как ответили здесь:https://stackoverflow.com/a/23440948/2083492


для наших коллег угловых пользователей:

внутри шаблон, Number(x) и parseInt(x) выдает ошибку, а +x не имеет никакого эффекта. Действительным кастингом будет x*1 или x/1.


излагая то, что сказал Райан, TypeScript охватывает идиомы JavaScript в целом.

var n = +"1"; // the unary + converts to number
var b = !!"2"; // the !! converts truthy to true, and falsy to false
var s = ""+3; // the ""+ converts to string via toString()

все интересные подробные детали в Преобразование Типов JavaScript.


как показывают другие ответы здесь, есть несколько способов сделать преобразование:

Number('123');
+'123';
parseInt('123');
parseFloat('123.45')

Я хотел бы упомянуть еще одну вещь о parseInt хотя.

при использовании parseInt, есть смысл всегда передавайте параметр radix. Для десятичного преобразования, то есть 10. Это значение по умолчанию для параметра, поэтому оно можете быть опущен. Для двоичного кода это 2 и 16 для шестнадцатеричных. На самом деле, любой radix между и в том числе 2 и 36 работ.

parseInt('123')         // 123 (don't do this)
parseInt('123', 10)     // 123 (much better)

parseInt('1101', 2)     // 13
parseInt('0xfae3', 16)  // 64227

на parseInt функция, ну, анализирует строки, чтобы преобразовать их в числа. В некоторых реализациях JS parseInt анализирует ведущие нули как восьмеричные:

хотя ECMAScript 3 и запрещает ECMAScript 5, Многие реализации интерпретируют числовую строку, начинающуюся с ведущего 0, как восьмеричную. Следующее может иметь восьмеричный результат или десятичный результат. всегда указывайте радиус избегайте этого ненадежного поведения.

- MDN

тот факт, что код становится более ясным, является хорошим побочным эффектом указания параметра radix.

С parseFloat анализирует только числовые выражения в radix 10, здесь нет необходимости в параметре radix.

подробнее об этом:


вы можете следовать любым из следующих способов.

var str = '54';

var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation 

есть встроенные функции, такие как parseInt(), parseFloat() и Number() в Typescript вы можете использовать их.