A1. 逆引き

4つの入口から本編へ / 順番に読む必要はありません

📅 作成: 2026-08-29 / 更新: 2026-08-29

この付録の使い方

4つの入口

  1. やりたいことから引く
  2. エラー番号から引く
  3. 他の言語の構文から引く
  4. 用語から引く

A1.1 やりたいことから引く

型を書く

やりたいこと書き方詳しくは
取りうる値を限定したいtype S = "a" | "b";04.3
enum のようなものが欲しい文字列リテラルの union04.3
プロパティを省略可能にしたいage?: number04.2
書き換えを禁止したいreadonly04.1
2つの型を合体したいA & B04.4
値をそのまま型にしたいas const04.3
一部だけ省略可能にしたいPartial<T>A4.1
特定のキーだけ取り出したいPick<T, K> / Omit<T, K>A4.1
同じ形の ID を取り違えたくないブランド型05.4

値を扱う

やりたいこと書き方詳しくは
union のどれか判定したいtypeof / in / 判別可能ユニオン08
分岐の漏れを検出したいnever による網羅性チェック08.5
判定を関数に切り出したいv is T08.4
null のとき既定値を使いたい??|| ではない)04.5
外部から来た JSON を安全に使いたいunknown + 型ガード06.2A3.1
失敗を戻り値で返したいResult<T, E>11.4A2.1

環境・設定

やりたいこと方法詳しくは
.ts をすぐ実行したいnpx tsx file.ts02.3
型検査だけしたいnpx tsc --noEmit02.2
実際に使われる設定を見たいnpx tsc --showConfig03.4
Node の型を使いたい@types/node"types": ["node"]02.4

A1.2 エラー番号から引く

エラーメッセージは既定で英語です。

npx tsc --locale ja で日本語になります。ただし検索するときは英語のほうが情報が見つかります。番号(TS2322 など)で検索するのが最も確実です。

型の不一致

番号メッセージ(抜粋)原因と対処詳しくは
TS2322Type 'X' is not assignable to type 'Y'.代入しようとした型が合わない。strictNullChecks による null の混入が多い03.2
TS2345Argument of type 'X' is not assignable to parameter of type 'Y'.引数の型が合わない07.1
TS2353Object literal may only specify known properties…余剰プロパティチェック。打ち間違いか、意図的な追加05.2
TS2339Property 'x' does not exist on type 'Y'.union のまま使っている。絞り込みが要る08

null・undefined

番号メッセージ(抜粋)原因と対処詳しくは
TS18048'x' is possibly 'undefined'.?.??、または if で確かめる04.5
TS2531Object is possibly 'null'.同上04.5
TS18046'e' is of type 'unknown'.catch の変数。instanceof Error で確かめる11.3

any・型の宣言

番号メッセージ(抜粋)原因と対処詳しくは
TS7006Parameter 'x' implicitly has an 'any' type.引数に型を書く。TS7 7 では strict が既定で有効03.2
TS2693'X' only refers to a type, but is being used as a value here.型を値として使った。interfaceinstanceof は使えない01.3
TS2591Cannot find name 'node:fs'. …install type definitions for node?TS7 @types/node"types": ["node"] の両方が要る02.4
TS2564Property 'x' has no initializer…クラスのプロパティを初期化する03.2

設定・モジュール

番号メッセージ(抜粋)原因と対処詳しくは
TS5112tsconfig.json is present but will not be loaded…TS7 コマンドラインにファイル名を書くと設定が無視される02.2
TS1064The return type of an async function must be the global Promise<T> type.async の戻り値を Promise<T> にする11.1
TS2307Cannot find module 'x' or its corresponding type declarations.型定義がない。@types を探すか自分で書く10.4

実行時のエラー(型検査では出ない)

メッセージ原因詳しくは
ERR_UNSUPPORTED_TYPESCRIPT_SYNTAXNode型ストリップ enum などが使われている02.3
ERR_MODULE_NOT_FOUNDESM 拡張子を省略した10.2
ERR_REQUIRE_ESMCJS から ESM を require した10.2
__dirname is not definedESM import.meta.dirname を使う10.2
x is not a functionas で嘘をついた、または default export の食い違い06.310.2

A1.3 他の言語の構文から引く

JavaScript から

JavaScript でのやり方TypeScript で足すこと詳しくは
const x = 1;そのままでよい(推論される)04.1
function f(a, b) {}引数に型を書く(strict では必須)07.1
JSON.parse(s)戻り値は anyunknown で受けて検証する06.2
arr.filter(x => x)型を絞りたいなら (x): x is T =>08.4
catch (e) { e.message }eunknowninstanceof Error で確かめる11.3

Java から

JavaTypeScript詳しくは
enum Status { A, B }type Status = "A" | "B";04.3
Optional<T>T | undefined?.??04.5
implements不要(形が合えば互換)。書いてもよい05.3
x instanceof MyInterface書けない。型ガード関数を書く08.4
List<String>string[]04.1
Map<K,V>Map<K,V> または Record<K,V>A4.1
throws IOException型に現れない。Result を検討する11.4
<T extends Comparable><T extends { ... }>09.2

C# から

C#TypeScript詳しくは
string?(nullable)string | null または string | undefined04.5
????(同じ)04.5
?.?.(同じ)04.5
(int)obj(キャスト)as実行時に検査されない06.3
recordtypereadonly04.2
switch の網羅性never による網羅性チェック08.5
where T : new()書けない。コンストラクタを引数で渡す09.4
typeof(T)書けない。型引数は実行時に消える09.4
in / out(変性)指定しない。構造から自動で決まる09.4

A1.4 用語から引く

用語意味詳しくは
型消去型が実行時に残らないこと。TypeScript の型はすべて消える01.2
構造的型付け名前ではなく形で互換を判定する方式05.1
名前的型付け型の名前が一致しないと互換にならない方式(Java・C#)05.1
余剰プロパティチェックオブジェクトリテラルを直接書いたときだけ、余分なプロパティを弾く仕組み05.2
ブランド型実体のない目印を足して、同じ形の型を区別する手法05.4
型アサーションas検査を黙らせるだけで、値は変わらない06.3
絞り込み(narrowing)条件分岐によって、その位置での型が狭まること08.1
判別可能ユニオン共通のキーに別々のリテラル型を持たせた union08.3
型ガードv is T を返す関数。絞り込みを関数に切り出す08.4
網羅性チェックnever を使い、分岐の漏れをコンパイル時に検出する手法08.5
変性(共変・反変)ある型の代わりに、広い/狭い型を使えるかの規則09.4
ESM / CJS2つのモジュール方式。package.json"type" が決める10.2
宣言ファイル(.d.ts型だけを書いたファイル。実装は含まない10.3
型ストリップ型注釈を取り除くだけで実行する方式。Node が採用02.3
Mapped Types既存の型のキーを回して新しい型を作る記法A4.2
Conditional Types条件によって結果が変わる型(T extends U ? X : YA4.3