TypeScript Number

TypeScript, как и JavaScript, поддерживает объект Number.

В TypeScript объект Number используется для обёртывания числовых типов.

Объект Number — это объект-обёртка для примитивных числовых значений.

Как и объект String, объект Number является ссылочным типом и отличается от примитивного типа number.

Хотя объект Number предоставляет некоторые дополнительные свойства и методы, в TypeScript рекомендуется использовать примитивный тип number напрямую, поскольку объект Number создаёт накладные расходы на производительность и путаницу типов.

Синтаксис

var num = new Number(value);

Обратите внимание, что это создаёт объект ссылочного типа, а не примитивный тип number.

Примечание:Если значение параметра не может быть преобразовано в число, будет возвращено NaN (Not-A-Number).

Разница между объектом Number и примитивным типом number

  • Примитивный типnumber: примитивный тип данных, используемый для хранения числовых значений.
  • NumberОбъект: ссылочный тип, объект-обёртка, используемый для обёртывания примитивных числовых значений.

Пример

let numLiteral: number = 42;
let numObject: Number = new Number(42);

console.log(typeof numLiteral); // Вывод: "number"
console.log(typeof numObject);  // Вывод: "object"

Свойства объекта Number

В следующей таблице перечислены свойства, поддерживаемые объектом Number:

Нет. Свойство & Описание
1.

MAX_VALUE

Наибольшее представимое число. Значение свойства MAX_VALUE близко к 1.79E+308. Значения, превышающие MAX_VALUE, представляют "Infinity".

2.

MIN_VALUE

Наименьшее представимое число, т. е. положительное число, ближайшее к 0 (оно фактически не становится равным 0). Наибольшее отрицательное число — это -MIN_VALUE, а MIN_VALUE приблизительно равно 5e-324. Значения, меньшие чем MIN_VALUE («значения с потерей значимости»), будут преобразованы в 0.

3.

NaN

Нечисловое значение (Not-A-Number).

4.

NEGATIVE_INFINITY

Отрицательная бесконечность, возвращается при переполнении. Это значение меньше MIN_VALUE.

5.

POSITIVE_INFINITY

Положительная бесконечность, возвращается при переполнении. Это значение больше MAX_VALUE.

6.

prototype

Статическое свойство объекта Number. Оно позволяет добавлять свойства и методы к объектам.

7.

constructor

Возвращает ссылку на функцию Number, создавшую этот объект.

TypeScript

console.log("Свойства Number в TypeScript:"); console.log("Максимальное значение:" + Number.MAX_VALUE); console.log("Минимальное значение:" + Number.MIN_VALUE); console.log("Отрицательная бесконечность:" + Number.NEGATIVE_INFINITY); console.log("Положительная бесконечность:" + Number.POSITIVE_INFINITY);

Компиляция приведённого выше кода создаёт следующий код JavaScript:

JavaScript

console.log("Свойства Number в TypeScript:"); console.log("Максимальное значение:" + Number.MAX_VALUE); console.log("Минимальное значение:" + Number.MIN_VALUE); console.log("Отрицательная бесконечность:" + Number.NEGATIVE_INFINITY); console.log("Положительная бесконечность:" + Number.POSITIVE_INFINITY);

Вывод:

TypeScript Number 属性:
最大值为: 1.7976931348623157e+308
最小值为: 5e-324
负无穷大: -Infinity
正无穷大:Infinity

Пример NaN

TypeScript

var month = 0 if( month<=0 || month >12) { month = Number.NaN console.log("Месяц:"+ month) } else { console.log("Введенное значение месяца корректно.") }

Компиляция приведённого выше кода создаёт следующий код JavaScript:

JavaScript

var month = 0; if (month <= 0 || month > 12) { month = Number.NaN; console.log("Месяц:" + month); } else { console.log("Введенное значение месяца корректно."); }

Вывод:

月份是:NaN

prototype пример

TypeScript

function employee(id:number,name:string) { this.id = id this.name = name } var emp = new employee(123,"admin") employee.prototype.email = "[email protected]" console.log("ID сотрудника:"+emp.id) console.log("Имя сотрудника:"+emp.name) console.log("Электронная почта сотрудника:"+emp.email)

Компиляция приведённого выше кода создаёт следующий код JavaScript:

JavaScript

function employee(id, name) { this.id = id; this.name = name; } var emp = new employee(123, "admin"); employee.prototype.email = "[email protected]"; console.log("ID сотрудника:" + emp.id); console.log("Имя сотрудника:" + emp.name); console.log("Электронная почта сотрудника:" + emp.email);

Вывод:

员工号: 123
员工姓名: admin
员工邮箱: [email protected]

Методы объекта Number

Объект Number поддерживает следующие методы:

Нет. Метод и описание Пример
1. toExponential()

Преобразует значение объекта в экспоненциальную запись.

//toExponential() 
var num1 = 1225.30 
var val = num1.toExponential(); 
console.log(val) // 输出: 1.2253e+3
2. toFixed()

Преобразует число в строку, указывая количество знаков после запятой.

var num3 = 177.234 
console.log("num3.toFixed() 为 "+num3.toFixed())    // 输出:177
console.log("num3.toFixed(2) 为 "+num3.toFixed(2))  // 输出:177.23
console.log("num3.toFixed(6) 为 "+num3.toFixed(6))  // 输出:177.234000
3. toLocaleString()

Преобразует число в строку, используя порядок локального формата чисел.

var num = new Number(177.1234); 
console.log( num.toLocaleString());  // 输出:177.1234
4. toPrecision()

Форматирует число до указанной длины.

var num = new Number(7.123456); 
console.log(num.toPrecision());  // 输出:7.123456 
console.log(num.toPrecision(1)); // 输出:7
console.log(num.toPrecision(2)); // 输出:7.1
5. toString()

Преобразует число в строку с использованием указанного основания системы счисления. Основание — целое число от 2 до 36. Если этот параметр опущен, используется основание 10.

var num = new Number(10); 
console.log(num.toString());  // 输出10进制:10
console.log(num.toString(2)); // 输出2进制:1010
console.log(num.toString(8)); // 输出8进制:12
6. valueOf()

Возвращает примитивное числовое значение объекта Number.

var num = new Number(10); 
console.log(num.valueOf()); // 输出:10

Рекомендации по использованию объекта Number

В TypeScript обычно рекомендуется использовать примитивный тип number, а не объект Number. Причины следующие:

  • Производительность: Примитивные типы более легковесны и обладают лучшей производительностью.
  • Согласованность типов: Система типов TypeScript отдаёт предпочтение примитивным типам, а использованиеNumberобъектов может привести к неожиданным несоответствиям типов.
  • Лучшие практики: Примитивный типnumberбольше соответствует лучшим практикам TypeScript, избегая ненужной сложности, вызванной обёртыванием в объект.

Если вам действительно нужно использовать определённые методы объекта Number, вы можете преобразовать объект Number в примитивный тип number с помощью метода valueOf().

В итоге TypeScript рекомендует использовать примитивный тип number, а не объект Number, чтобы код оставался кратким, эффективным и согласованным.

Пример

let numLiteral: number = 123.456;
let numObject: Number = new Number(123.456);

console.log(numLiteral.toFixed(2));      // Вывод: "123.46"
console.log(numObject.valueOf());        // Вывод: 123.456
Другие расширения