Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TypeScript初心者向け完全ガイド
Search
MIKIO KUBO
November 12, 2025
Education
180
1
Share
TypeScript初心者向け完全ガイド
# TypeScript初心者向け完全ガイド
## JavaScriptのスーパーセットから
## モダン開発の標準へ
MIKIO KUBO
November 12, 2025
More Decks by MIKIO KUBO
See All by MIKIO KUBO
AI+SCM
mickey_kubo
0
41
エージェンティック・サプライチェーン」の概念と、製造業におけるその革新的な役割について解説
mickey_kubo
0
45
MOAI Solutionの紹介 -電力最適化を中心として-
mickey_kubo
0
60
Agent SkillsによるAGI4OPT(最適化のためのAGI)
mickey_kubo
0
90
AGI4OPT:自然言語から数理最適化を導くエ ージェントスキル Translating Human Intent into Mathematical Optimization
mickey_kubo
0
98
AIで最適化を解けるか?
mickey_kubo
0
74
AI進化史:LLMからAIエージェントへ
mickey_kubo
0
150
最適化の芸術:生産と物流を統合する
mickey_kubo
0
42
次世代最適化プラットフォーム MOAI Patform
mickey_kubo
2
39
Other Decks in Education
See All in Education
We部コミュニティスライド2026-04-24
junhat6
0
140
良い塩梅を実現する、AWSネットワーク3分クッキング
masakiokuda
1
230
事業紹介資料(トレーナー養成講座)
kentaro1981
0
230
SSH_handshake_easy_explain
kenbo
0
970
ブランチ操作 / 02-a-branch
kaityo256
PRO
0
280
Laura Wilson - The Quarterly PR Pivot
laurawilsonbseo1
1
220
演習:Gitの基本操作 / 04-git-basic
kaityo256
PRO
1
470
Investigating Changes in Self-Assessed Spoken English Proficiency in a Three-Week Study-Abroad Program
uranoken
0
140
Analysis and Validation - Lecture 4 - Information Visualisation (4019538FNR)
signer
PRO
0
2.7k
自己紹介 / who-am-i
yasulab
6
6.6k
SL AMIGOS 教育格差と私たちの取り組み - スリランカの支援学校への支援プロジェクト:リシンドゥ リオ 氏 (別府溝部学園短期大学 ビジネス観光コース 留学生):2720 Japan O.K. ロータリーEクラブ2026年4月6日卓話
2720japanoke
0
550
Tangible, Embedded and Embodied Interaction - Lecture 7 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
2.2k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.3k
Writing Fast Ruby
sferik
630
63k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
We Are The Robots
honzajavorek
0
220
Facilitating Awesome Meetings
lara
57
6.8k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
GitHub's CSS Performance
jonrohan
1032
470k
Claude Code のすすめ
schroneko
67
220k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The SEO Collaboration Effect
kristinabergwall1
1
430
Believing is Seeing
oripsolob
1
120
Transcript
TypeScript 初心者向け完全ガイド JavaScript のスーパーセットから モダン開発の標準へ
パート1 :TypeScript の「なぜ」を理解する
1. TypeScript とは? Microsoftが開発・提供するオープンソース言語 JavaScriptの**「スーパーセット(上位互換)」** 重要な原則: 有効なJavaScriptコードは、すべて有効なTypeScriptコード 既存のJSプロジェクトに段階的に導入可能 JSの広大なエコシステム(ライブラリ等)をそのまま使える
2. なぜTypeScript が生まれたか? JavaScript のスケーリング問題 元々JSは小規模なスクリプト用に設計された「動的型付け言語」 大規模・複雑なアプリ開発では、柔軟性が弱点になる (実行時エラー、保守性の低下) TypeScript の目的
JSに「静的型システム」を追加 大規模開発でも堅牢で保守性の高いコードを実現する
3. 動的型付け vs 静的型付け 動的型付け (JavaScript) 変数の型は、 実行時(ランタイム)にチェックされる let age
= 25; age = "twenty-five"; // JSではエラーにならない 柔軟だが、バグが実行されるまで潜在する 静的型付け (TypeScript) 変数の型は、 開発時(コンパイル時)にチェックされる let age: number = 25; age = "twenty-five"; // TSでは即エラー エラーを早期に発見し、コードの信頼性を高める
4. 静的型付けの絶大なメリット 1. バグの早期発見 タイプミス、関数への誤ったデータ渡し、 undefined エラーなど。 実行前にエディタがエラーを教えてくれる。 2. コードがドキュメントになる
型定義自体が「この変数や関数が何を意図しているか」を明確に示す。 3. 強力なエディタサポート (IntelliSense) VS Codeなどで、正確なコード補完やリファクタリングが可能になる。
5. トランスパイルとは? (.ts → .js) ブラウザやNode.js はTS コード(.ts) を直接実行できない トランスパイル
TSコード( .ts )を、ブラウザが理解できる標準的なJSコード( .js )に変換する プロセス tsc (TypeScript Compiler) というコマンドが実行する ポイント 型情報は、開発者を助けるために 開発時にのみ存在する 型情報は、トランスパイル後の .js ファイルからは 消去される
パート2 :TypeScript を実際に使ってみる
6. 開発環境のセットアップ 1. Node.js と npm のインストール npm (Node Package
Manager) を使ってTSをインストールするため Node.js公式サイトからLTS(推奨版)をインストール 2. TypeScript コンパイラ (tsc) のインストール プロジェクト毎(ローカル)にインストールするのが現代のベストプラクテ ィス npm install typescript --save-dev 3. コードエディタ:VS Code Visual Studio Code の使用を強く推奨 TSと同じMicrosoft製で、最高クラスのTSサポートが組み込まれている
7. Hello, TypeScript! ( 作成・実行) 1. プロジェクト初期化 npm init -y
2. TS インストール npm install typescript --save-dev 3. TS ファイル作成 ( index.ts ) const message: string = "Hello, TypeScript!"; console.log(message); 4. コンパイル (TS → JS) npx tsc index.ts → index.js ファイルが生成される 5. 実行 (JS ファイルを実行)
8. tsconfig.json 入門 TypeScript プロジェクトの「設定ファイル」 役割: i. そのディレクトリがTSプロジェクトのルートであることを示す ii. コンパイラオプション(ルール)を指定する
iii. コンパイル対象のファイルを指定する 生成方法: npx tsc --init コマンドで、デフォルト設定のファイルを自動生成できる
9. 必須 tsconfig.json オプション オプション 説明 一般的な値 target 生成するJSのバージョン "ES2020"
module モジュールシステム "CommonJS" rootDir TSソースファイルの場所 "./src" outDir JS出力先の場所 "./dist" strict 厳格な型チェックを有効化 true ( 強く推奨) esModuleInterop モジュール間の互換性を向上 true include コンパイル対象 ["src/**/*"]
パート3 :TypeScript の型システム
10. 基本の型 ( プリミティブ型) JavaScriptの基本データ型に対応する型が用意されています。 string : 文字列 (例: "Hello"
, 'world' ) number : 数値 (例: 42 , 3.14 ) boolean : 真偽値 (例: true , false ) null : 値が存在しないことを示す undefined : 値がまだ代入されていない bigint , symbol 構文: let 変数名: 型 = 値; let myName: string = "Alice"; let myAge: number = 30; let isLoggedIn: boolean = false;
11. データの構造化 ( 配列・オブジェクト) 配列 (Arrays) 書き方は2種類。前者が一般的。 let list: number[]
= [1, 2, 3]; let list: Array<number> = [1, 2, 3]; // ジェネリック構文 オブジェクト (Objects) インラインで「形」を定義できる let person: { name: string; age: number; } = { name: "Bob", age: 42 };
12. 型注釈 vs 型推論 型注釈 (Annotation) 開発者が「この変数はこの型です」と明示的に指定する方法 let message: string
= "This is a message"; 型推論 (Inference) TSが初期値から「この変数はこの型だろう」と自動で推論する機能 let message = "This is a message"; // messageはstring型と推論 ベストプラクティス 初期値から型が明らかな場合は「型推論」に任せ、コードを簡潔に保つ
13. カスタム型①:type エイリアス type キーワードで、型に「別名」を付ける機能 同じ「形」を何度も再利用できる オブジェクト、プリミティブ、ユニオン型など、 あらゆる型に使える // オブジェクトの型エイリアス
type Point = { x: number; y: number; }; let coordinates: Point = { x: 10, y: 20 }; // ユニオン型のエイリアス type UserID = string | number; let myId: UserID = "user-123";
14. カスタム型②:interface オブジェクトの「形」や「契約(contract)」を定義するもう一つの方法 主にオブジェクトの構造定義に特化している // Personという名前のインターフェースを定義 interface Person { name:
string; age: number; } // 定義したインターフェースを使用 let user: Person = { name: "Carol", age: 25 };
15. type vs interface ( 使い分け) これは初心者が最も混乱しやすい点の一つです。 interface を使う場面: **オブジェクトの「形」**を定義するとき
extends キーワードで型を「 継承(拡張)」したいとき type を使う場面: ユニオン型 ( string | number ) を定義するとき プリミティブ型 ( type Name = string; ) に別名を付けるとき 結論: プロジェクト内でルールを一貫させることが最も重要です。 迷ったら、オブジェクトには interface 、それ以外には type と覚えるのも良 いでしょう。
16. 関数の型付け ( 基本) 関数の**「入力(パラメータ)」 と「出力(戻り値)」**の型を定義 バグを防ぎ、関数の意図を明確にする // パラメータ a,
b は number型 // 戻り値も ( ): number 型と定義 function add(a: number, b: number): number { return a + b; } // 何も値を返さない場合、戻り値の型は `void` function logMessage(message: string): void { console.log(message); }
17. 関数の型付け ( 応用) オプショナルパラメータ ( ? ) パラメータ名の後に ?
を付けると、そのパラメータは省略可能になる function greet(name: string, greeting?: string) { // ... } greet("Alice"); // OK greet("Bob", "Good morning"); // OK デフォルトパラメータ パラメータに初期値を設定(型は自動で推論される) function greetWithDefault(name: string, greeting = "Hello") { // greeting は string型と推論される }
18. ユニオン型 (Union Type) | **「または」**を意味する型 ある変数が、複数の型のうちのいずれか一つであることを許容 パイプ記号 | を使って表現する
let id: string | number; id = 101; // OK id = "user-101"; // OK // id = true; // エラー: boolean型は許容されていない 異なる型の入力を受け付ける関数などで非常に便利
19. 型の絞り込み (Type Narrowing) ユニオン型の変数が「今、どの型であるか」を特定する処理 typeof 演算子を使った**型ガード (Type Guard)**が最も一般的 function
printId(id: string | number) { if (typeof id === "string") { // このifブロックの中では、TSは`id`がstring型だと知っている console.log(id.toUpperCase()); // 安全にstringのメソッドが使える } else { // このelseブロックの中では、TSは`id`がnumber型だと知っている console.log(id); } }
パート4 :よりスマートなコードを書く
20. ジェネリクス:問題提起 問題点: 型が違うだけで、ロジックが全く同じ関数を複数書く必要がある 例:「配列の最初の要素を返す」関数 function getFirstNumber(arr: number[]): number |
undefined { return arr[0]; } function getFirstString(arr: string[]): string | undefined { return arr[0]; } any 型を使えば一つにまとめられるが、 型安全性が失われ、TSのメリットがなく なる
21. ジェネリクス <T> :解決策 型を「 パラメータ(変数)」のように扱う仕組み T (Typeの略)という名前が慣習的に使われる 柔軟性(どんな型でも扱える)と 型安全性(型チェックが効く)を両立できる
// Tは「呼び出される時に決まる型」のためのプレースホルダー function getFirstElement<T>(arr: T[]): T | undefined { return arr[0]; } // 呼び出すと、T が number に決まる const numbers = [1, 2, 3]; const firstNum = getFirstElement(numbers); // firstNum は number型 // 呼び出すと、T が string に決まる const strings = ["a", "b", "c"]; const firstStr = getFirstElement(strings); // firstStr は string型
まとめ TypeScriptはJSの スーパーセットで、 静的型付けを提供する バグを**開発の早期段階(実行前)**に発見できる VS Codeとの連携で、**生産性(コード補完など)**が劇的に向上する type や interface
で、再利用可能な「型(形)」を定義できる Generics により、 型安全とコードの再利用性を両立できる
次のステップ エコシステムを探求する ここで学んだスキルは、React, Angular, Vue, Node.js (NestJS) など、あら ゆるモダンな開発で即戦力となります。 まず、小さなプロジェクトを始めてみましょう!
実際にコードを書き、エラーを解決する経験が、知識をスキルに変える最良 の方法です。 TypeScript の旅は始まったばかりです!