【TypeScript】基本の型注釈:string・number・booleanの書き方

JavaScript

こんにちは、かつコーチです。

前回はJavaScriptとTypeScriptで同じコードを書き比べて、型があることの安心感を確認しました。

今回からは、実際に型注釈の書き方を1つずつ学んでいきます。

まずは一番よく使う、文字列・数値・真偽値の3つの基本型からです。

型注釈の基本的な書き方

コロンで型を指定する

TypeScriptでは、変数名の後ろに: 型名という形で型注釈を書きます。

let userName: string = "かつコーチ";
let userAge: number = 35;
let isActive: boolean = true;

変数名: 型名 = 値という並び順を覚えておけば、基本の書き方はこれだけです。

string型:文字列を扱う

基本の書き方

文字列を扱う変数にはstring型を使います。

let message: string = "こんにちは";
let username: string = 'かつコーチ';
let template: string = `${username}さん、${message}`;

シングルクォート・ダブルクォート・バッククォート(テンプレートリテラル)、どの書き方で作った文字列もstring型として扱われます。

型に合わない値を代入しようとすると

let message: string = "こんにちは";
message = 100; // エラー: Type 'number' is not assignable to type 'string'.

一度stringと宣言した変数には、後から数値を代入しようとしてもエラーになります。

「この変数はずっと文字列専用」という約束が、代入のたびにチェックされるイメージです。

number型:数値を扱う

整数も小数もnumber型

JavaScriptと同じく、TypeScriptにも整数専用・小数専用の型はなく、数値はすべてnumber型でまとめて扱います。

let age: number = 35;
let price: number = 1980;
let taxRate: number = 0.1;
let temperature: number = -5;

整数・小数・マイナスの値、どれも同じnumber型として扱われます。

計算結果の型も自動で推論される

型注釈を書いていない変数でも、TypeScriptは代入された値から自動的に型を推論します。

let quantity = 3; // 型注釈がなくても number型と推論される
let unitPrice = 500;
let total = quantity * unitPrice; // total も number型と推論される

console.log(total); // 1500

この仕組みを「型推論」と呼びます。

すべての変数にいちいち: numberと書かなくても、TypeScriptが賢く型を判断してくれるため、実務では型が明らかな場面では型注釈を省略することも多いです。

boolean型:真偽値を扱う

trueかfalseの2択

条件分岐の結果などを扱うboolean型は、truefalseのどちらかしか入りません。

let isLoggedIn: boolean = false;
let hasPermission: boolean = true;
let isAdult: boolean = 20 >= 18; // 比較演算子の結果も boolean型

比較演算子(>====など)の結果は、自動的にboolean型になります。

型注釈の省略と型推論の使い分け

いつ型注釈を書き、いつ省略するか

先ほど触れたとおり、TypeScriptには型推論があるため、すべての変数に型注釈を書く必要はありません。

一般的には、次のような使い分けがよく行われます。

場面型注釈
変数を宣言と同時に初期化する省略してOK(型推論に任せる)
変数だけ先に宣言し、後から値を入れる明示的に書く
関数の引数必ず明示的に書く(推論できないため)
関数の戻り値書いておくと安全(省略も可能)
// 宣言と同時に初期化 → 型推論に任せてOK
let count = 0;

// 先に宣言だけして、後から値を入れる → 型注釈が必須
let result: string;
result = "処理完了";

let result;のように型注釈なしで宣言すると、TypeScriptはany型(どんな値でも入る、型チェックが効かない特殊な型)として扱ってしまい、せっかくの型チェックの恩恵が受けられなくなります。

先に宣言だけする変数には、忘れずに型注釈を付けておきましょう。

かつコーチが実際につまずいたポイント:数値と数値文字列の混同

フォームの入力値はすべてstring型になる

私が型注釈に慣れてきた頃に実際にハマったのが、フォームの入力値の扱いです。

HTMLのフォーム(<input>要素)から取得できる値は、見た目が数字であっても、TypeScript上は必ずstring型として扱われます。

❌ Before:入力値をそのままnumber型の変数に入れようとする

// input要素の value は常に string型
const inputValue: string = "1980";

let price: number = inputValue; // エラー: Type 'string' is not assignable to type 'number'.

見た目は数字の"1980"でも、型としてはstringなので、そのままnumber型の変数には代入できません。

私は最初、「数字っぽい文字列なんだから、いい感じに扱ってくれるだろう」と思い込んでいて、このエラーの意味がすぐには理解できませんでした。

✅ After:Numberで明示的に変換してから代入する

const inputValue: string = "1980";

const price: number = Number(inputValue); // 明示的に number型へ変換
console.log(price + 20); // 2000

Number()という関数を使い、string型からnumber型へ明示的に変換することで、型のルールを守ったまま数値として扱えるようになります。

この「型が合わないときは、意図を込めて明示的に変換する」という考え方は、TypeScriptを書くうえで何度も登場する重要な感覚です。

エラーが出たときに焦って型を無理やり合わせるのではなく、「そもそもこの値は今どんな型なのか」を確認する癖をつけると、原因にすぐたどり着けるようになります。

まとめ

この記事のポイント

  • 変数名: 型名 = 値という形で、基本の型注釈を書く
  • 文字列はstring型、数値はnumber型、真偽値はboolean型で扱う
  • 宣言と同時に初期化する場合は、型推論に任せて型注釈を省略できる
  • 先に宣言だけする変数には、any型になるのを防ぐため型注釈を明示する
  • フォームの入力値などstring型のデータを数値として使うときは、Number()で明示的に変換する

次に読むべき記事

基本の型が分かったところで、次は複数の値をまとめて扱う「配列」と「タプル」の型の書き方を見ていきましょう。

→ 次の記事:配列とタプルの型の書き方

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