Kembali ke Artikel
2024-01-10•10 menit baca

Pola Desain TypeScript Lanjutan

TypeScriptDesign PatternsAdvanced

Jelajahi pola TypeScript untuk membangun aplikasi yang lebih tangguh dan aman secara tipe.

Pola Desain TypeScript Lanjutan

TypeScript menyediakan fitur kuat untuk menerapkan pola desain. Berikut beberapa teknik lanjutan.

Builder Pattern

Pola Builder membuat objek kompleks selangkah demi selangkah:

class QueryBuilder {
  private query: string = '';

  select(fields: string[]): this {
    this.query += `SELECT ${fields.join(', ')} `;
    return this;
  }

  from(table: string): this {
    this.query += `FROM ${table} `;
    return this;
  }

  where(condition: string): this {
    this.query += `WHERE ${condition}`;
    return this;
  }

  build(): string {
    return this.query;
  }
}

// Usage
const query = new QueryBuilder()
  .select(['name', 'email'])
  .from('users')
  .where('active = true')
  .build();

Generic Repository Pattern

Buat lapisan akses data dengan pemeriksaan tipe:

interface Repository<T> {
  findById(id: string): Promise<T | null>;
  findAll(): Promise<T[]>;
  save(entity: T): Promise<T>;
  delete(id: string): Promise<void>;
}

class UserRepository implements Repository<User> {
  // Implementation
}

Discriminated Unions

Tangani state berbeda dengan aman secara tipe:

type Result<T> =
  | { status: 'success'; data: T }
  | { status: 'error'; error: Error };

function handleResult<T>(result: Result<T>) {
  if (result.status === 'success') {
    console.log(result.data);
  } else {
    console.error(result.error);
  }
}

Kesimpulan

Pola-pola ini memanfaatkan sistem tipe TypeScript agar kode lebih aman dan mudah dirawat.