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 вы можете использовать их.