roblox-luau-types について
Roblox Luauの型注釈、推論、絞り込み、型ソルバーを扱うリファレンススキルです。型付きLuauコードの作成やレビューに役立ち、厳密性と信頼境界の指針も示します。
主な機能
- 01厳密性モードの指針
- 02推論と注釈の実践
- 03テーブル・ユニオン・ジェネリクス
- 04型の絞り込みとエクスポート
- 05新しい型ソルバーの要件
活用シーン
- 01Luauプロジェクトの厳密性選択
- 02型注釈やキャストのレビュー
- 03タグ付きユニオンによる状態設計
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tabooharmony/ roblox-brain --skill roblox-luau-typesインストール後、Claude Code で/roblox-luau-typesを入力して読み込まれたか確認します。
同梱ファイルreferences/full.md
詳細
Luau の型システム
読み込むタイミング
Luau の注釈、推論、絞り込み、厳格モード、エクスポート、ソルバー機能を扱う場合に読み込みます。構文については roblox-luau-core、ライフサイクル/スケジューリングについては roblox-luau-patterns を参照してください。
クイックリファレンス
厳格モード: 保守対象のコードには --!strict、移行中は --!nonstrict、レガシーコードまたは生成コードに限り --!nocheck を使用します。ディレクティブとプロジェクト設定でモードが選択されるため、全体に適用されるデフォルトがあると想定しないでください。
新しいソルバーの要件: keyof、rawkeyof、setmetatable<T, M>、type function、read メンバーには新しい型ソルバーが必要です。nocheck/nonstrict プロジェクトではデフォルトで有効ですが、strict プロジェクトでは Workspace.UseNewLuauTypeSolver = Enabled(Scripting)が必要です。ここでのエラーは通常、構文ではなくソルバーが適切でないことを意味します。
推論の考え方: まず推論させ、境界(引数、戻り値、エクスポート)に注釈を付けます。すべてのローカル変数に注釈を付けないでください。
シール済みテーブルと未シールテーブル: 注釈のないローカルテーブルは、注釈が付くか、関数から返されるか、スコープが終了するまで、新しいフィールドを追加できる状態のままです。注釈を付けるとシールされます。注釈を付ける前にテーブルを完成させてください。型付き関数にテーブルを渡してもシールされません。
ユニオン: local id: string | number はユニオンです。タグ付きユニオン(type State<T> = {kind:"loading"} | {kind:"ready", value:T})を優先し、kind で判別して絞り込みます。
絞り込み: typeof、IsA、アサーション、タグ付き判別子によって型が絞り込まれます。例については full.md を参照してください。
欠落するキー: ルックアップでキーが見つからない可能性がある場合は { [K]: V? } を使用し、使用前に絞り込みます。
閉じた語彙: リテラルユニオンを優先します。never によるチェックで、分岐の不足を検出できます。require は静的に解決できる状態に保ってください。実践的なガイダンスについては full.md を参照してください。
ジェネリック: 入力から出力への型が重要な場合に使用します。例:function first<T>(list: {T}): T?、または type Result<T> = {success: boolean, value: T?}。決して any で置き換えないでください。
型のエクスポート: モジュール境界では export type Foo = {...} を使用し、利用側では Types.Foo を使います。
オブジェクトの型付け: typeof(setmetatable({} :: CounterData, Counter)) で self を正確に型付けできます。新しいソルバーでは setmetatable<T, M> を直接使用できます。
キャスト(::): 過度に一般化された推論を絞り込むために使用し、エラーを隠すためには使用しないでください。
信頼境界: 注釈が契約する相手はコンパイラーであり、実行時データではありません。Remotes、DataStores、HttpService、属性には引き続きチェックが必要です。信頼できる境界の内側では、型に処理を任せてください。
レビュー: 隠れた any、早すぎるシール、チェックされていないキャスト、ソルバーを考慮しない書き換えがないことを確認してください。
完全なリファレンスについては
references/full.mdを参照してください。