---
title: typesql
description: Dodawaj do SQL typy służące wyłącznie do sprawdzania, nie zmieniając instrukcji przekazywanej do silnika zapytań.
species: concept
---
# typesql

typesql dodaje do SQL adnotacje, pakiety, funkcje z typami i precyzyjną diagnostykę. Jego główną gwarancją jest wymazywanie: po usunięciu składni dotyczącej wyłącznie typów pozostały SQL ma takie samo znaczenie w środowisku uruchomieniowym.

```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
```

## Stopniowość wbudowana w projekt

Brak adnotacji jest prawidłowy. Moduł sprawdzający wnioskuje to, co może, z katalogu jeziora i zgłasza nieznane nazwy, niezgodne typy, nieprawidłowe argumenty funkcji, niebezpieczną możliwość wartości null oraz błędy pakietów za pomocą stabilnych kodów `TS####`.

Dodaj adnotację tam, gdzie kontrakt ma znaczenie. `satisfies` sprawdza wyrażenie bez rzutowania. `!` zapisuje zobowiązanie braku wartości null. Nagłówki CTE z typami publikują strukturę tabeli dla dalszej części instrukcji.

## Oddzielenie środowiska uruchomieniowego

Adnotacje nigdy nie stają się rzutowaniami ani filtrami. `import type` jest całkowicie wymazywane. Dokument z diagnostyką nie jest przepisywany na inne zapytanie tylko po to, aby przeszedł kontrolę.

Użyj `cast` w środowisku uruchomieniowym, gdy zamierzasz wykonać konwersję. Użyj składni typesql, gdy zamierzasz coś zweryfikować.

## Skąd pochodzą typy

Dostawca schematu przekazuje kolumny jeziora, dowody kluczy podstawowych, kolumny systemowe, struktury JSON i proweniencję masek polityk. Pakiety przypięte do treści dodają nazwane struktury i sygnatury funkcji bez konieczności korzystania z aktywnego źródła podczas kontroli typów.

Przejdź do [adnotacji typów](/docs/typesql/annotations), [dokumentacji typów](/docs/typesql/types) albo [rejestru diagnostyki](/docs/typesql/diagnostics).
