0Pricing
TypeScript Academy · Pelajaran

Menyimpulkan Bentuk Hasil Kueri

Biarkan pembuat kueri menyimpulkan jenis baris yang dikembalikan.

Menyimpulkan Bentuk Hasil Kueri adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.

Tipe Hasil Mengikuti Pilihan

Pembangun kueri yang baik tidak hanya memvalidasi masukan; pembangun tersebut juga menyimpulkan bentuk yang persis dari setiap baris hasil berdasarkan kolom yang Anda pilih. Pilih lebih sedikit kolom, dan tipe hasil akan menjadi lebih sempit.

Select Baris Penuh

Memanggil select() tanpa proyeksi mengembalikan seluruh tipe baris.

const rows = await db.select().from(users);
// rows: { id: number; name: string; age: number | null; isAdmin: boolean }[]

Select Parsial Mempersempit Tipe

Proyeksikan hanya kolom yang Anda perlukan, dan tipe hasil hanya berisi kunci-kunci tersebut.

const rows = await db
  .select({ id: users.id, name: users.name })
  .from(users);
// rows: { id: number; name: string }[]
// Accessing rows[0].age is a compile error.

Mengganti Nama Kolom dalam Hasil

Kunci objek select menjadi kunci hasil, sehingga Anda dapat mengganti nama dengan bebas dan tipe akan mencerminkan nama baru tersebut.

const rows = await db
  .select({ userId: users.id, fullName: users.name })
  .from(users);
// rows: { userId: number; fullName: string }[]

Kolom Terhitung dan Teragregasi

Agregat membawa tipe hasil inferensinya sendiri. count() menghasilkan angka; kunci alias memberinya nama dalam hasil.

import { count } from "drizzle-orm";

const rows = await db
  .select({ total: count() })
  .from(users);
// rows: { total: number }[]

Kemungkinan NULL Mengalir

Jika Anda memilih kolom yang dapat bernilai NULL, kemungkinan NULL-nya dipertahankan dalam hasil. Memilih age mempertahankan tipe number | null.

const rows = await db.select({ age: users.age }).from(users);
// rows: { age: number | null }[]

Cara Membangun Inferensi

Tipe hasil adalah tipe terpetakan atas objek select: setiap nilai merupakan kolom yang tipe data-nya, beserta kemungkinan NULL-nya, dibaca ke dalam kunci yang sesuai.

type InferSelect<S> = {
  [K in keyof S]: S[K] extends Column<infer D, infer Null>
    ? Null extends true ? D | null : D
    : never;
};

Pembantu Baris Tunggal

Beberapa pembangun menyediakan akses .get() atau [0]. Tipe elemen tetap diturunkan dari pilihan yang sama, hanya dibuka dari larik.

const one = (await db.select({ id: users.id }).from(users))[0];
// one: { id: number } | undefined

JOIN Memperluas Bentuk

Saat Anda melakukan JOIN, tipe hasil memperoleh kunci dari tabel yang digabungkan. Select parsial pada tabel-tabel yang digabungkan tetap mempersempit tipe secara tepat. (JOIN dibahas dalam pelajaran tersendiri.)

const rows = await db
  .select({ name: users.name, title: posts.title })
  .from(users)
  .innerJoin(posts, eq(posts.authorId, users.id));
// rows: { name: string; title: string }[]

Mengapa Penyempitan Penting

Mengembalikan hanya kunci yang Anda pilih mencegah ketergantungan tidak sengaja pada kolom yang tidak diambil. Tipe mencerminkan SQL yang sebenarnya, sehingga galat pengambilan data berlebih maupun kurang muncul di penyunting.

Kesalahan Umum: Menyebarkan lalu Memilih

Jika Anda mengambil seluruh baris lalu memilih kunci secara manual dalam JS, Anda kehilangan manfaat penyempitan di tingkat basis data dan mengirim kolom tambahan melalui jaringan. Sebaiknya lakukan penyempitan pada kueri.

Pemeriksaan Singkat

Pastikan pemahaman Anda tentang bentuk hasil yang disimpulkan.

Rangkuman

Tipe hasil dihitung dari pilihan melalui tipe terpetakan: select penuh mengembalikan seluruh baris, select parsial mempersempit hasil ke kunci yang dipilih, penggantian nama mengubah kunci hasil, kemungkinan NULL mengalir, dan agregat membawa tipenya sendiri. Tipe statis selalu mencerminkan SQL yang benar-benar Anda tulis.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menyimpulkan Bentuk Hasil Kueri” gratis?

Ya — teks lengkap “Menyimpulkan Bentuk Hasil Kueri” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menyimpulkan Bentuk Hasil Kueri”?

Biarkan pembuat kueri menyimpulkan jenis baris yang dikembalikan. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai TypeScript Academy?

Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Menyimpulkan Bentuk Hasil Kueri” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pemetaan Skema ke Jenis
  2. Pembuatan Kueri yang Aman Secara Jenis
  3. Menyimpulkan Bentuk Hasil Kueri
  4. Relasi dan Join dengan Jenis
← Kembali ke TypeScript Academy