TypeScript Number

TypeScriptはJavaScriptと同様に、Numberオブジェクトをサポートしています。

TypeScriptでは、Numberオブジェクトは数値型をラップするために使用されます。

Numberオブジェクトはプリミティブ数値のラッパーオブジェクトです。

Stringオブジェクトと同様に、Numberオブジェクトは参照型であり、基本的なnumber型とは異なります。

Numberオブジェクトにはいくつかの追加のプロパティとメソッドがありますが、TypeScriptでは基本的なnumber型を直接使用することが推奨されます。Numberオブジェクトはパフォーマンスのオーバーヘッドと型の混乱をもたらすためです。

構文

var num = new Number(value);

注意すべき点は、これにより参照型のオブジェクトが作成され、基本的なnumber型ではないということです。

注意:引数の値を数値に変換できない場合は、NaN(非数値)が返されます。

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より小さい値("underflow values")は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("TypeScript Number プロパティ:"); console.log("最大値:" + Number.MAX_VALUE); console.log("最小値:" + Number.MIN_VALUE); console.log("負の無限大:" + Number.NEGATIVE_INFINITY); console.log("正の無限大:" + Number.POSITIVE_INFINITY);

上記のコードをコンパイルすると、以下のJavaScriptコードが得られます:

JavaScript

console.log("TypeScript Number プロパティ:"); 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("従業員番号:"+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("従業員番号:" + 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オブジェクトの特定のメソッドを使用する必要がある場合は、valueOf()メソッドを使用してNumberオブジェクトを基本的なnumber型に変換できます。

要するに、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
その他の拡張