TypeScript

JavaScript

【TypeScript】JavaScriptプロジェクトをTypeScriptに移行するコツ

こんにちは、かつコーチです。前回は、外部ライブラリの型定義(@types)の探し方・使い方について解説しました。そして今回が、TypeScript基礎編の最終回です。テーマは「動いているJavaScriptプロジェクトを、どうやってType...
JavaScript

【TypeScript】外部ライブラリの型定義(@types)の探し方・使い方

こんにちは、かつコーチです。前回は、「とりあえずany」から卒業するための考え方について解説しました。TypeScriptで開発をしていると、自分のコードではなく外部のライブラリをimportしただけで型エラーが出て困る、という場面によく出...
JavaScript

【TypeScript】「とりあえずany」から卒業するための考え方

こんにちは、かつコーチです。前回は、strictモードとtsconfig.jsonの主要オプションについて解説しました。strictモードを有効にしても、実は簡単に型チェックをすり抜ける方法があります。それが今回のテーマ、any型です。「型...
JavaScript

【TypeScript】strictモードとは?tsconfig.jsonの主要オプション解説

こんにちは、かつコーチです。前回は、よくあるTypeScriptエラーの読み方について解説しました。今回は少し視点を変えて、そもそもTypeScriptが「どこまで厳しくエラーを検知するか」を決めているtsconfig.jsonのstric...
JavaScript

【TypeScript】よくあるTypeScriptエラーの読み方

こんにちは、かつコーチです。前回は、非nullアサーション(!)を使うべき場面・避けるべき場面について解説しました。型注釈やジェネリクスを覚えてきても、実際にコードを書いていると必ずぶつかるのが「赤い波線」と「見慣れない英語のエラーメッセー...
JavaScript

【TypeScript】as constとリテラル型推論

こんにちは、かつコーチです。前回はunion型を安全に絞り込む「型ガード」を扱いました。今回はその型ガードとも相性がいい、as const(値を変更不可・かつ最も狭い型として扱う指示)とリテラル型推論を紹介します。「配列や設定オブジェクトを...
JavaScript

【TypeScript】型ガードでunion型を安全に絞り込む

こんにちは、かつコーチです。前回はPartial・Pick・Omitといったユーティリティ型で、既存の型を加工する方法を紹介しました。今回は、union型(string | number のように複数の型のどれかを表す型)を安全に扱うための...
JavaScript

【TypeScript】ユーティリティ型入門:Partial・Pick・Omitの使い方

こんにちは、かつコーチです。前回はジェネリクスの制約(extends)を扱い、型パラメータに条件をつける方法を紹介しました。今回は、その仕組みを使って作られているユーティリティ型(既存の型を加工して新しい型を作る組み込み機能)を紹介します。...
JavaScript

【TypeScript】ジェネリクスの制約(extends)を使いこなす

こんにちは、かつコーチです。前回はジェネリクスの基本を扱い、型を引数のように渡す考え方を紹介しました。今回はその一歩先、ジェネリクスの制約(extends)を扱います。「ジェネリクスは書けるようになったけど、T に対して自由にプロパティへア...
JavaScript

【TypeScript】ジェネリクス入門:型を引数のように扱う

こんにちは、かつコーチです。前回は、null と undefined を安全に扱う strictNullChecks について解説しました。今回からは少し応用的な内容に入っていきます。最初のテーマは、TypeScriptを学んでいると必ずぶ...
JavaScript

【TypeScript】nullとundefinedの安全な扱い方(strictNullChecks)

こんにちは、かつコーチです。前回は、オプショナルプロパティ(?)と readonly の使い方について解説しました。今回は、TypeScriptを実務で使ううえで避けて通れない「null と undefined の扱い方」を取り上げます。「...
JavaScript

【TypeScript】オプショナルプロパティ(?)とreadonlyの使い方

こんにちは、かつコーチです。前回は、enum(列挙型)の使い方について解説しました。今回は、オブジェクトの型定義をより実務向きにする2つの記法、「オプショナルプロパティ(?)」と「readonly」を扱います。どちらも小さな記号ひとつですが...
JavaScript

【TypeScript】enum(列挙型)の使い方

こんにちは、かつコーチです。前回は、type と interface の違いについて解説しました。今回は、TypeScript独自の機能である「enum(列挙型)」を扱います。「決まった選択肢の中からどれか一つを選ばせたい」という場面は、実...
JavaScript

【TypeScript】typeとinterface、結局どちらを使うべき?

こんにちは、かつコーチです。前回は、リテラル型で値を限定する方法を解説しました。TypeScriptで型を定義しようとすると、必ずぶつかるのが「type と interface、どっちを使えばいいの?」という疑問です。どちらもオブジェクトの...
JavaScript

【TypeScript】リテラル型で値を限定する

こんにちは、かつコーチです。前回はunion型とintersection型を使って、複数の型を組み合わせる方法を解説しました。その中で何度か登場した「リテラル型」について、今回はあらためて詳しく掘り下げていきます。「特定の値しか受け付けない...
JavaScript

【TypeScript】union型(|)とintersection型(&)の使い方

こんにちは、かつコーチです。前回は any・unknown・never という特殊な型を解説しました。今回は、複数の型を組み合わせて新しい型を作る「union型」と「intersection型」を扱います。実務のコードでは「AかBのどちらか...
JavaScript

【TypeScript】any型・unknown型・never型の違い

こんにちは、かつコーチです。前回は関数の型について解説し、最後に「any型に逃げると型チェックの恩恵を受けられなくなる」という話をしました。今回はその続きとして、TypeScript特有の3つの型、any・unknown・never の違い...
JavaScript

【TypeScript】関数の型:引数と戻り値に型をつける

こんにちは、かつコーチです。前回はオブジェクトの型定義について解説しました。今回は、TypeScriptのもう一つの基本である「関数の型」を扱います。関数に型をつけられるようになると、「この関数に何を渡せばよくて、何が返ってくるのか」がコー...
JavaScript

【TypeScript】オブジェクトの型を定義する方法

こんにちは、かつコーチです。前回は配列とタプルの型の書き方を解説しました。今回は、TypeScriptを使ううえで避けて通れない「オブジェクトの型定義」について解説します。ユーザー情報や商品データなど、実務のコードではオブジェクトを扱う場面...
JavaScript

【TypeScript】配列とタプルの型の書き方

こんにちは、かつコーチです。前回はstring・number・booleanという基本の型注釈を解説しました。今回は、複数の値をまとめて扱う「配列」の型の書き方と、配列に似ているけれど少し特殊な「タプル」という型を紹介します。配列の型の書き...