mcpField
T
typescript-v6

typescript-v6

github.com/blockmatic開発1222 回インストール5 週間前に更新
リポジトリ

typescript-v6 について

TypeScript 6.0+の型システム機能と型安全なAPI設計のためのガイドです。型推論、ドメインモデル、コンパイル時の保証を中心に扱い、基本構文や実行時検証は対象外です。

主な機能

  1. 01条件型とマップ型
  2. 02型ガードと型の絞り込み
  3. 03判別可能なユニオン型
  4. 04プリミティブ値を区別するブランド型
  5. 05厳密で合成可能な型の実践

活用シーン

  1. 01型安全なステートマシンのモデル化
  2. 02オブジェクト型の体系的な変換
  3. 03識別子の誤った混同の防止
  4. 04unknown値の安全な型の絞り込み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/blockmatic/basilic-skills --skill typescript-v6

インストール後、Claude Code で/typescript-v6を入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
advanced-generics.md
conditional-types.md
discriminated-unions.md

詳細

スキル:typescript

対象範囲

  • 対象:TypeScript 6.0 以降の型システム機能、型安全な API、複雑なドメインモデル、型推論、コンパイル時の保証
  • 対象外:基本構文、フレームワーク固有のパターン、実行時のバリデーション(別途 Zod を使用してください)

前提

  • フォルダーでは npm view typescript(すでに 7 の場合があります)ではなく、package.json の typescript を基準にします(このリポジトリでは @typescript/typescript6 ^6)
  • 6.0 は JavaScript ベースの最後のコンパイラーです。7.0 はネイティブ(Go)です。@typescript/native は tsc と並んで配置される場合がありますが、このスキルの対象バージョンではありません
  • 厳格モード("strict": true)
  • ES2020 以降を対象とします(6.0 のデフォルトは esnext/es2025 へ移行する傾向があります)
  • 6.0 で非推奨となったオプションは、7.0 で削除されるまで "ignoreDeprecations": "6.0" で無視できます。非推奨項目は修正することを推奨します:https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/

原則

  • 条件に基づいて型を選択するには、条件型を使用します
  • オブジェクト型を体系的に変換するには、マップ型を使用します
  • 実行時のチェックと型の絞り込みには、型ガード(value is Type)を使用します
  • 網羅性チェックを備えた型安全なステートマシンには、判別可能なユニオンを使用します
  • プリミティブ型の混同を防ぐには、ブランド型を使用します
  • 型安全のため、any より unknown を優先します
  • 型アサーション(as Type)より型ガードを使用します
  • 型は合成しやすく、浅く保ちます(深いネストは避けます)
  • 不変のデータ構造には readonly を指定します

制約

必須
  • 厳格モード(tsconfig.json の "strict": true)を有効にします
  • 型付けされていない値には any ではなく unknown を使用します
  • 可能な場合は、型アサーションではなく型ガード(value is Type)を使用します
推奨
  • ユニオン型/ユーティリティ型には type を、オブジェクトの形状には interface を使用します
  • 型は合成しやすく、浅く保ちます
  • 不変のデータ構造には readonly を指定します
  • プリミティブ型の混同を防ぐには、ブランド型を使用します
  • TypeScript 7 のネイティブ版を採用する前に、6.0 の非推奨項目に対処します
避けるべきこと
  • any の使用(型ガードと併せて unknown を使用します)
  • 検証を伴わない型アサーション
  • ジェネリクスの過剰な使用(型が実際に変化する場合に限ります)
  • 深い型のネスト(コンパイルが遅くなり、デバッグが難しくなります)
  • インポートアサーション(assert { type: ... })。インポート属性の with を使用します

関連項目

  • zod と連携し、型推論を伴う実行時バリデーションを行います
  • 型安全な API ルートで next を補完します
  • 型安全なルートスキーマで fastify を補完します

パターン

マップ型

オブジェクト型を体系的に変換します:

type Partial<T> = { [P in keyof T]?: T[P] }
type Readonly<T> = { readonly [P in keyof T]: T[P] }
type Pick<T, K extends keyof T> = { [P in K]: T[P] }
型ガード

型の絞り込みを伴う実行時の型チェック:

function isString(value: unknown): value is string {
  return typeof value === 'string'
}

function isSuccess(result: Result): result is Success {
  return result.status === 'success'
}
ブランド型

型安全性を確保するための名目的な型を作成します:

type UserId = string & { readonly __brand: 'UserId' }
type PostId = string & { readonly __brand: 'PostId' }

function createUserId(id: string): UserId {
  return id as UserId
}
判別可能なユニオン

網羅性チェックを備えた型安全なステートマシン:

type LoadingState =
  | { status: 'idle' }
  | { status: 'loading' }
  | { status: 'success'; data: string[] }
  | { status: 'error'; error: Error }

参考資料

リソース

コメント