Menu
CoddyTech

Cheat Sheet TypeScript

Terakhir diperbarui

Tipe dasar

Tipe primitif dan cara memberi anotasi pada variabel.

OperasiSintaks
Stringlet name: string = "Ada";
Numberlet age: number = 25;
Booleanlet ok: boolean = true;
Array berisi Tlet xs: number[] = [1, 2, 3];
Array genericlet xs: Array<string> = [];
Tuplelet pair: [string, number] = ["a", 1];
Any (keluar dari pemeriksaan tipe)let x: any = 1;
Unknown (any yang lebih aman)let x: unknown = JSON.parse(s);
Void (tanpa nilai kembalian)function log(): void { … }
Never (tidak pernah selesai)function fail(): never { throw … }
Null / undefinedlet n: null = null;

Inferensi tipe & anotasi

Kapan membiarkan TS menyimpulkan tipe dan kapan menulis anotasi.

OperasiSintaks
Disimpulkan dari nilailet count = 0; // number
Anotasi eksplisitlet count: number = 0;
Parameter fungsifunction add(a: number, b: number) { … }
Tipe nilai kembalianfunction add(a: number, b: number): number { … }
Arrow functionconst sq = (x: number): number => x * x;
Type assertionconst el = input as HTMLInputElement;
Const assertion (literal)const dirs = ["up", "down"] as const;
Non-null assertionel!.focus();

Interface

Menggambarkan bentuk sebuah object.

OperasiSintaks
Mendeklarasikaninterface User { id: number; name: string; }
Property opsionalinterface User { age?: number; }
Property readonlyinterface User { readonly id: number; }
Signature methodinterface Logger { log(msg: string): void; }
Memperluas interface laininterface Admin extends User { role: string; }
Index signatureinterface Map { [key: string]: number; }
Mengimplementasikan di classclass Db implements Logger { … }

Type alias & union

Memberi nama sebuah tipe dan menggabungkan tipe dengan | dan &.

OperasiSintaks
Type aliastype ID = string | number;
Type alias untuk objecttype User = { id: number; name: string };
Union typetype Status = "idle" | "loading" | "done";
Intersection typetype Admin = User & { role: string };
Literal typetype Yes = "yes";
Nullabletype Maybe<T> = T | null | undefined;
Type alias untuk fungsitype Handler = (e: Event) => void;

Fungsi

Parameter bertipe, nilai kembalian, dan overload.

OperasiSintaks
Parameter opsionalfunction greet(name?: string) { … }
Parameter defaultfunction greet(name = "friend") { … }
Rest parameterfunction sum(...ns: number[]): number { … }
Tipe fungsilet fn: (a: number) => number;
Interface yang bisa dipanggilinterface Fn { (x: number): number; }
Signature overloadfunction f(x: string): string; function f(x: number): number; function f(x: any) { return x; }
Kembalian void diabaikanconst cb: () => void = () => 42; // ok

Class

Class dengan access modifier dan parameter property.

OperasiSintaks
Mendeklarasikan classclass User { name: string; }
Constructorconstructor(name: string) { this.name = name; }
Parameter propertyconstructor(public name: string) {}
Public / private / protectedprivate id: number;
Field readonlyreadonly id: number;
Anggota staticstatic count = 0;
Getter / setterget name() { return this._name; }
Inheritanceclass Admin extends User { … }
Class abstrakabstract class Shape { abstract area(): number; }

Generic

Tipe yang bisa dipakai ulang dan diberi parameter tipe lain.

OperasiSintaks
Fungsi genericfunction id<T>(x: T): T { return x; }
Memanggil dengan tipe eksplisitid<string>("hi");
Interface genericinterface Box<T> { value: T; }
Type alias generictype Pair<A, B> = [A, B];
Class genericclass Stack<T> { items: T[] = []; }
Batasan dengan extendsfunction len<T extends { length: number }>(x: T) { return x.length; }
Parameter tipe defaultinterface Box<T = string> { value: T; }
Operator keyoftype K = keyof User; // "id" | "name"
Index access typetype Name = User["name"];

Narrowing

Mempersempit union menjadi satu tipe saat runtime.

OperasiSintaks
Pemeriksaan typeofif (typeof x === "string") { … }
Pemeriksaan instanceofif (e instanceof Error) { … }
Operator inif ("name" in obj) { … }
Narrowing lewat kesamaanif (status === "done") { … }
Truthinessif (value) { … }
Type guard kustomfunction isUser(x: any): x is User { return "id" in x; }
Discriminated uniontype Shape = { kind: "sq"; size: number } | { kind: "ci"; r: number };
Pemeriksaan kelengkapan dengan neverconst _: never = shape;

Enum

Kumpulan konstanta bernama.

OperasiSintaks
Enum numerikenum Direction { Up, Down, Left, Right }
Enum stringenum Status { Idle = "IDLE", Done = "DONE" }
Memakai sebuah nilailet d: Direction = Direction.Up;
Const enum (disisipkan inline)const enum Color { Red, Green, Blue }
Union literal (cara modern)type Status = "idle" | "done";

Utility type

Fungsi bantu bawaan yang mengubah tipe yang sudah ada.

OperasiSintaks
Menjadikan semua property opsionalPartial<User>
Menjadikan semua property wajibRequired<User>
Menjadikan semua property readonlyReadonly<User>
Memilih sebagian keyPick<User, "id" | "name">
Menghilangkan satu key atau lebihOmit<User, "password">
Object dengan key tertentuRecord<string, number>
Mengecualikan dari unionExclude<"a" | "b" | "c", "a">
Hanya menyisakan dari unionExtract<"a" | "b", "a" | "c">
Menghapus null / undefinedNonNullable<string | null>
Tipe nilai kembalian fungsiReturnType<typeof fn>
Tuple parameter fungsiParameters<typeof fn>
Tipe hasil promise (awaited)Awaited<Promise<string>>

Module

Import dan export antar-file.

OperasiSintaks
Named exportexport function add(a: number, b: number) { … }
Default exportexport default class User { … }
Re-exportexport { User } from "./user";
Named importimport { add } from "./math";
Default importimport User from "./user";
Mengimpor tipe sajaimport type { User } from "./user";
Mengimpor semuanyaimport * as math from "./math";
Triple-slash reference/// <reference types="node" />

Dasar tsconfig

Flag compiler yang perlu kamu ketahui.

OpsiEfek
"strict": trueMengaktifkan semua pemeriksaan strict mode (disarankan).
"target": "ES2022"Versi JavaScript yang dihasilkan tsc.
"module": "ESNext"Sistem module pada output yang dihasilkan.
"moduleResolution": "bundler"Me-resolve module dengan cara bundler modern.
"jsx": "react-jsx"Mengaktifkan JSX untuk React 17+.
"esModuleInterop": trueDefault import yang lebih rapi dari module CommonJS.
"skipLibCheck": trueMelewati pemeriksaan tipe node_modules (build lebih cepat).
"noEmit": trueHanya memeriksa tipe; output diserahkan ke bundlermu.

Sintaks TypeScript yang paling sering kamu pakai, dalam satu halaman. Cheat sheet TypeScript ini adalah referensi cepat untuk TS sehari-hari: tipe dasar, interface, type alias, generic, union, narrowing, dan utility type bawaan. Karena TypeScript dibangun di atas JavaScript, simpan juga cheat sheet JavaScript untuk sintaks dasarnya.

Semua yang ada di sini adalah TypeScript standar yang bisa kamu compile dengan tsc dan berjalan di mana pun JavaScript modern berjalan. Salin yang kamu butuhkan, atau coba potongan kode apa pun langsung di playground TypeScript, tanpa perlu instalasi. Baru mengenal tipe? Kursus TypeScript interaktif gratis dari Coddy membangunnya selangkah demi selangkah dari JavaScript.

FAQ cheat sheet TypeScript

Apakah cheat sheet TypeScript ini gratis?

Ya. Cheat sheet TypeScript ini sepenuhnya gratis, tanpa perlu daftar. Simpan di bookmark dan kembali kapan pun kamu perlu mencari tipe, interface, atau utility type.

Apa perbedaan interface dan type alias?
Keduanya bisa menggambarkan bentuk object, dan di sebagian besar kasus sehari-hari keduanya bisa saling menggantikan. Interface bisa dibuka ulang dan diperluas di beberapa file (declaration merging), yang berguna untuk tipe library. Type alias bisa memberi nama union, intersection, tuple, dan mapped type, yaitu bentuk yang tidak bisa kamu tulis dengan interface. Aturan umumnya: pakai interface untuk bentuk object publik, dan type untuk union, tuple, dan tipe hasil perhitungan.
Apa perbedaan any dan unknown?
any sepenuhnya keluar dari pemeriksaan tipe: compiler membiarkanmu melakukan apa saja padanya. unknown aman dari sisi tipe: kamu harus mempersempitnya (dengan typeof, instanceof, atau type guard) sebelum bisa memakainya. Utamakan unknown untuk nilai dari sumber luar seperti JSON.parse atau fetch, karena ia memaksamu memvalidasi dulu sebelum dipakai.
Apakah saya perlu belajar JavaScript sebelum TypeScript?

Ya. TypeScript adalah JavaScript dengan sistem tipe di atasnya, jadi setiap keterampilan JavaScript tetap terpakai. Kalau kamu masih membangun dasar JS (array, object, async/await), cheat sheet JavaScript adalah titik awal yang bagus, dan kursus JavaScript gratis dari Coddy membahas materi yang sama secara interaktif.

Bisakah saya berlatih TypeScript secara online?

Bisa. Buka playground TypeScript untuk menjalankan potongan kode apa pun dari cheat sheet ini di browsermu, tanpa perlu instalasi. Kalau kamu ingin belajar terarah, mulailah dari halaman kursus JavaScript, lalu terapkan tipe dari halaman ini di atasnya.

Ilustrasi bahasa pemrograman di Coddy

Belajar TypeScript bersama Coddy

Mulai