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.