โ† Kembali ke Blog
TypeScriptJavaScriptWeb DevelopmentProgrammingTechnology

TypeScript 6.0 Telah Rilis: Jembatan Menuju Era Native Compiler

Kiyomi FujiwaraKiyomi Fujiwaraโ€ข07 April 2026
TypeScript 6.0 Telah Rilis: Jembatan Menuju Era Native Compiler

๐Ÿš€ Fitur Baru & Peningkatan Bahasa

1. Inferensi Tipe yang Lebih Cerdas pada Fungsi this-less

Salah satu peningkatan kualitas hidup developer di versi ini adalah perbaikan pada cara TypeScript menyimpulkan tipe pada metode objek.

Sebelumnya, jika Anda menggunakan sintaks method shorthand (tanpa arrow function), TypeScript sering gagal menyimpulkan tipe secara benar jika urutan properti objek diacak. Hal ini karena TypeScript mengasumsikan keberadaan parameter this implisit membuat fungsi tersebut "kontekstual".

Di TS 6.0, jika tubuh fungsi tidak pernah menggunakan this, TypeScript tidak akan menganggapnya sebagai fungsi yang sensitif terhadap konteks. Hasilnya? Inferensi tipe menjadi jauh lebih akurat terlepas dari urutan penulisan kode.

typescript
// โœ… Sekarang bekerja dengan baik di TS 6.0
callIt({
    consume(y) { return y.toFixed(); }, // 'y' berhasil diinferensi
    produce(x: number) { return x * 2; },
});

2. Dukungan Subpath Imports #/

Node.js modern kini mendukung subpath imports yang dimulai dengan #/, dan TypeScript mengikutinya. Ini memungkinkan alias impor internal yang lebih bersih.

package.json:

json
{
  "imports": {
    "#/*": "./dist/*"
  }
}

Penggunaan:

typescript
import * as utils from "#/utils.js"; // Lebih bersih daripada relative path panjang

3. Tipe API Modern: Temporal, RegExp.escape, dan Map Upsert

TS 6.0 memperbarui standard library untuk menyelaraskan dengan standar ECMAScript terbaru (es2025):

  • Temporal API: Tipe bawaan untuk API Temporal (Stage 4) kini tersedia untuk penanganan tanggal/waktu yang lebih baik tanpa polyfill eksternal.
  • RegExp.escape: Fungsi baru untuk menghindari karakter khusus regex secara otomatis.
  • Map.getOrInsert: Metode baru (Stage 4) pada Map dan WeakMap untuk menyederhanakan pola "check-then-set".
typescript
// Pola lama
if (!myMap.has("key")) myMap.set("key", computeValue());
const val = myMap.get("key");

// Pola baru di TS 6.0
const val = myMap.getOrInsert("key", computeValue());

4. Penggabungan Lib dom

Anda tidak perlu lagi menulis ["dom", "dom.iterable"] di konfigurasi lib. Semua fitur iterasi DOM kini digabung ke dalam dom secara default.


โš™๏ธ Perubahan Default: Lebih Ketat & Modern

TypeScript 6.0 mengubah default values dari beberapa opsi tsconfig agar mencerminkan ekosistem JavaScript modern. Bagi banyak proyek, ini akan terasa seperti mengaktifkan mode strict secara otomatis.

OpsiDefault Lama (5.9)Default Baru (6.0)
strictfalsetrue
targetES3ES2025
moduleCommonJS (bervariasi)ES2022 (tergantung target)
moduleResolutionnode10bundler

Dampak Besar pada Konfigurasi

Ada dua perubahan default yang paling mungkin memecahkan build Anda saat upgrade:

  1. types default-nya sekarang [] (Kosong) Sebelumnya, TypeScript memuat semua @types yang ditemukan di node_modules. Sekarang, Anda harus secara eksplisit mendefinisikannya. Ini meningkatkan performa kompilasi hingga 20-50%.

    Solusi: Tambahkan ini ke tsconfig.json:

    json
    "types": ["node", "jest"] // Sesuaikan dengan kebutuhan
    
  2. rootDir default-nya sekarang . (Lokasi tsconfig) Sebelumnya, rootDir diinferensi secara otomatis dari struktur file. Sekarang defaultnya adalah folder di mana tsconfig.json berada.

    Masalah: Jika struktur Anda src/index.ts dan tsconfig.json ada di root, output mungkin akan menjadi dist/src/index.js (bersarang).

    Solusi: Set eksplisit:

    json
    "rootDir": "./src"
    

๐Ÿšง Breaking Changes & Deprecations (Persiapan TS 7.0)

Karena TypeScript 7.0 akan ditulis ulang di Go, banyak fitur lama yang membebani performa atau sudah usang akan dihapus. Di TS 6.0, fitur-fitur ini ditandai sebagai deprecated dan akan berhenti bekerja total di TS 7.0.

Opsi yang Tidak Lagi Didukung (Deprecated)

Jika Anda masih menggunakan opsi berikut, Anda harus mulai migrasi:

  • target: es5 & es3: Era IE sudah berakhir. Gunakan minimal ES2015.
  • module: amd, umd, system: Gunakan ESNext, nodenext, atau bundler.
  • moduleResolution: node / node10: Beralihlah ke node16/nodenext atau bundler.
  • baseUrl: Opsi ini sering menyebabkan kebingungan resolusi modul. Ganti penggunaannya dengan inisialisasi path yang eksplisit di paths atau hapus jika tidak perlu.
  • outFile: Penggabungan file sebaiknya ditangani oleh bundler (Vite, Webpack, esbuild), bukan compiler TypeScript.

Perubahan Sintaksis

  • Namespace: Menggunakan kata kunci module untuk deklarasi namespace sekarang error. Gunakan namespace.
    typescript
    // โŒ Error
    module MyUtils { ... }
    // โœ… Benar
    namespace MyUtils { ... }
    
  • Import Attributes: Sintaks assert { } pada import diganti menjadi with { } sesuai standar ECMAScript terbaru.
    typescript
    // โŒ Deprecated
    import data from "./data.json" assert { type: "json" };
    // โœ… Baru
    import data from "./data.json" with { type: "json" };
    

๐Ÿ› ๏ธ Panduan Migrasi Cepat

Jika Anda berencana untuk melakukan upgrade, silakan ikuti langkah-langkah berikut๏ผš

  1. Update Dependencies:

    bash
    npm install -D typescript@6.0
    
  2. Update tsconfig.json: Pastikan Anda menambahkan konfigurasi berikut untuk menghindari error:

    jsonc
    {
      "compilerOptions": {
        "types": ["node"], // Penting: Auto-discovery dimatikan
        "rootDir": "./src", // Penting: Cegah nesting output
        // Jika Anda masih butuh mode longgar:
        // "strict": false 
      }
    }
    
  3. Gunakan Tool Migrasi Otomatis: Tim TypeScript menyediakan tool eksperimental ts5to6 untuk menangani perubahan baseUrl dan rootDir secara otomatis:

    bash
    npx @andrewbranch/ts5to6 --fixBaseUrl .
    npx @andrewbranch/ts5to6 --fixRootDir .
    
  4. Tangani Deprecation: Jika Anda kewalahan dengan warning deprecation dan ingin menundanya sebentar, Anda bisa menggunakan "escape hatch" (ini tidak akan bekerja di TS 7.0):

    json
    "ignoreDeprecations": "6.0"
    

๐Ÿ”ฎ Melangkah ke TypeScript 7.0

TypeScript 6.0 adalah fondasi yang kokoh. Dengan mengadopsi versi ini, Anda membersihkan kodebase dari fitur-fitur usang dan menyesuaikan diri dengan default modern yang lebih aman dan cepat.

Langkah selanjutnya? Cobalah Native Preview dari TypeScript 7.0 yang sudah tersedia. Dengan arsitektur Go-nya, janji performa type-checking yang jauh lebih cepat (terutama untuk monorepo besar) sudah di depan mata.

Selamat berkoding dengan TypeScript 6.0!


Referensi: Microsoft DevBlog, GitHub Gist, dan Diskusi Komunitas TypeScript.

Lihat referensi resmi โ†—