TypeScript | 基礎文法:変数・基本型 – number型

TypeScript
スポンサーリンク

number型とは何か

TypeScriptのnumber型は、「数値」を表すための基本型です。整数も小数も、正の数も負の数も、すべてまとめてnumberとして扱います。JavaScript/TypeScriptには「int型」「float型」のような区別はなく、「数は全部number」というルールになっています。

let age: number = 25;
let price: number = 1980;
let rate: number = 0.1;
let temperature: number = -3.5;
TypeScript

ここで宣言された変数はすべて「数値専用の箱」です。あとから文字列や真偽値を代入しようとすると、TypeScriptがコンパイル時にエラーとして教えてくれます。


number型の基本的な使い方

四則演算と組み合わせる

number型は、足し算・引き算・掛け算・割り算といった基本的な演算と一緒に使うのが定番です。

const price: number = 1000;
const taxRate: number = 0.1;

const tax: number = price * taxRate;
const total: number = price + tax;

console.log(total); // 1100
TypeScript

ここでは、pricetaxRatetaxtotalもすべてnumber型です。
TypeScriptは「数値同士の計算」として扱うので、途中で文字列が紛れ込んでおかしな結果になる、という事故を防ぎやすくなります。

型注釈と型推論

型注釈を付けると、より明示的に「ここは数値だけ」と宣言できます。

let count: number = 0;
count = 1;      // OK
// count = "1"; // エラー
TypeScript

一方、初期値が数値なら、型注釈を書かなくてもTypeScriptが自動的にnumberと推論してくれます。

let score = 80;   // number と推論される
// score = "80"; // エラー
TypeScript

どちらの場合も、「この変数は数値として扱う」という前提がコンパイラに伝わっているので、文字列などを代入しようとすると、その場で止めてくれます。


number型と文字列の違いを体感する

「見た目が数字」でも型は違う

初心者がよくハマるのが、「見た目は数字だけど、型はstring」というパターンです。

const a: number = 10;
const b: string = "10";

const sum = a + b;
console.log(sum);
TypeScript

JavaScript的には、これは"1010"(文字列結合)になってしまいます。
TypeScriptでしっかり型を付けていれば、anumberbstringと分かるので、「ここで足し算しているのは本当に意図通りか?」とすぐに気づけます。

本来やりたいのが「数値としての足し算」なら、bnumberにするか、Number(b)のように明示的に変換する必要があります。

const a: number = 10;
const b: string = "10";

const sum: number = a + Number(b);
console.log(sum); // 20
TypeScript

「数字っぽい文字列」と「本物の数値」をきちんと区別することが、number型を使ううえでとても大事な感覚です。


小数・負の数・特殊な値

小数や負の数もすべてnumber

TypeScriptでは、小数や負の数もすべてnumber型です。

const pi: number = 3.14;
const minus: number = -5;
const ratio: number = 1.5;
TypeScript

整数専用の型はないので、「整数だけを許したい」といった制約は、型ではなくロジック側(バリデーションなど)で表現することになります。

NaN や Infinity も number 型

少し踏み込むと、NaN(Not a Number)やInfinitynumber型の一種です。

const x: number = 0 / 0;      // NaN
const y: number = 1 / 0;      // Infinity
TypeScript

これらは「数値として扱われるけれど、計算結果としては特殊な値」です。
実務では、「NaNになっていないか」「Infinityになっていないか」をチェックすることもありますが、まずは「これらもnumber型の仲間なんだな」くらいの理解で十分です。


number型とTypeScriptの型チェックの相性

間違った型の代入を早期に防ぐ

TypeScriptの強みは、「数値のつもりだったのに、いつの間にか文字列が入っていた」といったバグを、実行前に見つけられることです。

let price: number = 1000;
// どこかで…
price = "1000"; // コンパイルエラー
TypeScript

JavaScriptだけだと、こういう代入は普通に通ってしまい、計算のタイミングでおかしな挙動をします。
TypeScriptでnumber型をきちんと付けておけば、「ここは数値専用だから、文字列はダメ」とコンパイラが守ってくれます。

関数の引数・戻り値にもnumber型を付ける

関数の設計でも、number型はよく使います。

function add(a: number, b: number): number {
  return a + b;
}

const result = add(3, 5);    // OK
// const wrong = add(3, "5"); // エラー
TypeScript

「この関数は数値を受け取って数値を返す」という契約を型で表現しておくことで、呼び出し側のミスをコンパイル時に防げます。
数値計算が絡む処理ほど、number型をしっかり付けておく価値が高くなります。


初心者がまず身につけたいnumber型の感覚

number型は、「計算に使う値」「数量」「金額」「割合」など、現実世界の「数」をコードに落とし込むための土台です。
大事なのは、「見た目が数字かどうか」ではなく、「型としてnumberなのかstringなのか」を意識することです。

まずは、次のようなところから始めるといいです。

数えるもの(回数、人数など)はnumberで宣言する。
金額や割合もnumberで宣言し、計算に使う。
「数字っぽい文字列」はstringとして扱い、必要なときだけNumber()で変換する。

タイトルとURLをコピーしました