TypeScript Academy · Pelajaran

TypeScript 5.3-5.4: Pengecilan Baharu dan NoInfer

Gunakan utiliti NoInfer serta pengecilan switch/case baharu.

Pelajaran 3 daripada 413 langkah

TypeScript 5.3-5.4: Pengecilan Baharu dan NoInfer ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran TypeScript Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Gambaran Keseluruhan TypeScript 5.3

TypeScript 5.3 (November 2023) memperkenalkan penyempitan yang dipertingkatkan untuk pernyataan switch/case, sokongan jenis import JSDoc dan mod resolusi dalam import type.

// npm install typescript@5.3

Penambahbaikan Penyempitan Switch/Case

TS 5.3 mempertingkat penyempitan jenis dalam pernyataan switch, khususnya untuk kesatuan terbeza dengan berbilang kes.

type Result = { status: "ok"; data: string } | { status: "err"; code: number };

function handle(r: Result) {
  switch (r.status) {
    case "ok":
      console.log(r.data);   // r: { status: "ok"; data: string } — narrowed
      break;
    case "err":
      console.log(r.code);   // r: { status: "err"; code: number } — narrowed
      break;
  }
}

Jenis import JSDoc

TS 5.3 menambahkan sokongan untuk teg JSDoc @import bagi import jenis sahaja dalam fail JavaScript.

/** @import { User } from "./types.js" */

/** @param {User} user */
function greet(user) {
  console.log(user.name);
}

resolution-mode dalam import type

TS 5.3 membolehkan anda menentukan resolution-mode dalam import type untuk mengawal sama ada import diselesaikan sebagai CommonJS atau ESM.

import type { User } from "some-library" with { "resolution-mode": "require" };

Gambaran Keseluruhan TypeScript 5.4

TypeScript 5.4 (Mac 2024) memperkenalkan jenis utiliti NoInfer, mengekalkan penyempitan dalam penutupan, serta jenis Object.groupBy dan Map.groupBy.

// npm install typescript@5.4

Jenis Utiliti NoInfer<T>

NoInfer menghalang TypeScript daripada menggunakan argumen generik sebagai tapak inferens, lalu memaksa jenis itu dibuat inferensnya daripada argumen lain sahaja.

function createStore<T>(initial: T, onChange: (val: NoInfer<T>) => void) {
  // T inferred from initial, not from onChange callback
}

createStore({ count: 0 }, (val) => {
  // val: { count: number } — inferred from initial only
});

Mengapa NoInfer Penting

Tanpa NoInfer, TypeScript akan cuba membuat inferens T daripada kedua-dua argumen dan mungkin meluaskan jenis itu secara tidak dijangka.

// Before NoInfer: T may be widened by the callback
function createStore<T>(initial: T, onChange: (val: T) => void) {}
createStore({ count: 0 }, (val: { count: number; extra: string }) => {});
// T widened to include extra — not what we want

Penyempitan yang Dikekalkan Selepas Penutupan

TS 5.4 mengekalkan penyempitan jenis dalam penutupan apabila pemboleh ubah yang telah disempitkan itu tidak ditetapkan selepas penutupan.

function process(val: string | null) {
  if (!val) return;
  // val: string
  setTimeout(() => {
    console.log(val.toUpperCase()); // TS 5.4: still string — not widened
  }, 100);
}

Penaipan Object.groupBy

TS 5.4 menambahkan jenis untuk kaedah statik Object.groupBy dan Map.groupBy ES2024.

const users = [
  { name: "Alice", role: "admin" },
  { name: "Bob", role: "user" },
];
const grouped = Object.groupBy(users, (u) => u.role);
// grouped: { [role: string]: { name: string; role: string }[] }

Penghasilan Pengisytiharan yang Dipertingkatkan

TS 5.4 mempertingkat penghasilan fail pengisytiharan untuk kes kompleks yang melibatkan jenis dipetakan dan jenis bersyarat, lalu mengurangkan ralat palsu dalam fail .d.ts yang dijana.

// Fewer "Type ... is not assignable to type ..." errors
// in generated declaration files from TS 5.4 onward

Ringkasan: TS 5.3-5.4

TS 5.3: penyempitan switch/case yang dipertingkatkan dan sokongan JSDoc @import. TS 5.4: NoInfer untuk menyekat tapak inferens jenis yang tidak dikehendaki, penyempitan penutupan yang dikekalkan dan jenis Object.groupBy.

Semakan Pantas

Apakah yang dihalang oleh NoInfer?

Perkara yang Anda Pelajari

TS 5.3 mempertingkat penyempitan switch/case dan menambahkan jenis import JSDoc. TS 5.4 memperkenalkan NoInfer untuk mengawal tapak inferens, mengekalkan penyempitan merentas penutupan dan menambahkan jenis Object.groupBy untuk ES2024.

Percuma untuk bermula

Pelajari TypeScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
101
Pelajaran
352

Soalan Lazim

Adakah pelajaran “TypeScript 5.3-5.4: Pengecilan Baharu dan NoInfer” percuma?

Ya — teks penuh “TypeScript 5.3-5.4: Pengecilan Baharu dan NoInfer” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus TypeScript Academy, tingkat taraf kepada CoddyKit PRO. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “TypeScript 5.3-5.4: Pengecilan Baharu dan NoInfer”?

Gunakan utiliti NoInfer serta pengecilan switch/case baharu. Anda berlatih TypeScript Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan TypeScript Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran TypeScript Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “TypeScript 5.3-5.4: Pengecilan Baharu dan NoInfer” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. TypeScript 5.0: Piawaian Penghias dan Parameter Jenis const
  2. TypeScript 5.1-5.2: Inferens yang Dipertingkat
  3. TypeScript 5.3-5.4: Pengecilan Baharu dan NoInfer
  4. TypeScript 5.5+: Deklarasi Terasing dan Seterusnya
← Kembali ke TypeScript Academy