rigor-typescript-utility-types
TypeScript標準のユーティリティ型の綴りを、Rigor独自のシェイプ投影型関数(shape-projection type function)へとマッピングします。これにより、TypeScript / Sorbet RBIから移行してくるコードベースが、RBS::Extendedアノテーションの中で馴染みのある名前を書けるようになります。ADR-13のTypeNodeResolverを5つ登録します ── 純粋な変換レイヤーであり、シェイプ(shape)のセマンティクスはコアに存在し、そこではあらゆる利用者で共有される単一の仕様所有の定義を持ちます。
これはrigortypeにバンドルされて配布されます。plugins:の下で有効化します。
plugins: - rigor-typescript-utility-types完全なガイド。シェイプ投影そのもの ── 各々が何をするか、ロッシー投影(lossy-projection)ルール、TypeScript→Rigorの語彙表 ── は、ハンドブックの第4章 — タプルとハッシュシェイプの§「Deriving new shapes」とTypeScript付録でカバーされています。このページは運用上のクイックリファレンスです。
何を解決するか
Section titled “何を解決するか”| TypeScriptの綴り | Rigorコアの投影 |
|---|---|
Pick<T, K> | pick_of[T, K] |
Omit<T, K> | omit_of[T, K] |
Partial<T> | partial_of[T] |
Required<T> | required_of[T] |
Readonly<T> | readonly_of[T] |
class Address # @rbs! # %a{rigor:v1:return: Pick[Address::Shape, :name | :email]} def public_fields; endendプラグインが有効になると、Pick[…]のヘッドは完全な解決パス(組み込み → プラグインチェーン → RBS Nominalフォールバック)を通じて解決されるため、サブ引数にはRigorの既存の型語彙のいずれを使ってもかまいません。
このプラグインに設定ノブはありません ── リゾルバチェーンはクラスロード時に登録されます。
- マッピングされていないTS名は
Nominalに格下げされます。Parameters<F>、ReturnType<F>、InstanceType<C>、Awaited<P>、文字列ケーシングユーティリティ(Uppercase/Lowercase/…)、ThisParameterType、NoInferはマッピングされていません ── これらにはまだRigorの対応物がない(あるいは未着手のコア演算子を必要とする)ため、Nominal[Name, […]]として解決されます。 - 非シェイプキャリアでロッシーになります。(
HashShape/Tupleではなく)裸のNominal[Hash, [K, V]]に投影を適用すると、入力をそのまま返し、呼び出し箇所を監査できるようdynamic.shape.lossy-projectionの:infodiagnosticを記録します。
プラグインの内部
Section titled “プラグインの内部”5つのリゾルバクラス、再帰的な解決メカニズム、ADR-13のTypeNodeResolver契約(contract)については、プラグインのREADMEにあります。プラグインの書き方についてはexamples/とrigor-plugin-authorスキルを参照してください。
© 2026 TypedDuck. Licensed under CC BY-SA 4.0.