---
title: typesql
description: クエリエンジンに渡す文を変えずに、検証専用の型を SQL に追加します。
species: concept
---
# typesql

typesql は SQL に注釈、パッケージ、型付き関数、正確な診断を追加します。中心的な保証は消去です。型専用の構文を除去しても、残った SQL の実行時の意味は変わりません。

```typesql
with paid(customer_id: string!, revenue: decimal(18, 2)!) as (
  select
    customer satisfies string!,
    sum(amount) / 100.0 satisfies decimal(18, 2)!
  from titan.stripe.charges
  where status = 'succeeded' and customer is not null
  group by customer
)
select * from paid
```

## 段階的に導入できる設計

注釈が 1 つもなくても有効です。検証器はレイクのカタログから可能な範囲で推論し、不明な名前、互換性のない型、不正な関数引数、安全でない null 許容性、パッケージの問題を、安定した `TS####` コードで報告します。

契約が重要な箇所に注釈を追加します。`satisfies` は式をキャストせずに検証します。`!` は非 null の条件を記録します。型付き CTE ヘッダーは、文のほかの部分にテーブルの構造を公開します。

## 実行時との分離

注釈がキャストやフィルターになることはありません。`import type` は完全に消去されます。診断が出たドキュメントを、検証を通すために別のクエリへ書き換えることはありません。

値を変換するなら、実行時の `cast` を使います。検証するなら、typesql の構文を使います。

## 型の根拠

スキーマプロバイダーは、レイクの列、主キーの根拠、システム列、JSON の構造、ポリシーマスクの由来を提供します。内容を固定したパッケージは、型検証時にライブのソースを必要とせずに、名前付きの構造と関数シグネチャを追加します。

続いて[型注釈](/docs/typesql/annotations)、[型リファレンス](/docs/typesql/types)、[診断一覧](/docs/typesql/diagnostics)を参照してください。
