Cara Bekerja dengan Dekorator TypeScript di Angular

Dekorator TypeScript adalah jenis deklarasi khusus yang dapat dilampirkan ke kelas, metode, aksesor, properti, atau parameter. Di Angular, dekorator menyediakan cara untuk menambahkan metadata ke kelas, sehingga sangat ampuh untuk membuat komponen, layanan, dan lainnya yang dapat digunakan kembali. Panduan ini menjelaskan cara bekerja dengan dekorator TypeScript di Angular, dengan memberikan contoh untuk membantu memahami penggunaannya dengan lebih baik.

Apa itu Dekorator TypeScript?

Dekorator adalah fungsi yang mengubah perilaku kelas atau anggota kelas. Dalam Angular, dekorator digunakan untuk mendefinisikan komponen, direktif, pipa, dan layanan yang dapat disuntikkan. Dekorator menyediakan cara deklaratif untuk menerapkan metadata ke kelas, yang digunakan Angular untuk berbagai keperluan, seperti membuat contoh komponen atau menyuntikkan dependensi.

Dekorator Sudut Umum

Angular memiliki beberapa dekorator bawaan yang digunakan untuk berbagai keperluan. Berikut ini adalah dekorator Angular yang paling umum:

  • @Component - Menentukan komponen Angular.
  • @Directive - Menentukan direktif Angular.
  • @Pipe - Menentukan pipa Angular.
  • @Injectable - Menentukan layanan yang dapat disuntikkan ke komponen atau layanan lain.
  • @Input - Menghias properti untuk menjadikannya input pengikatan data.
  • @Output - Menghias properti untuk menjadikannya keluaran yang mengikat peristiwa.

Menggunakan @Component Decorator

Dekorator @Component digunakan untuk mendefinisikan komponen Angular. Dekorator ini menyediakan metadata tentang komponen, seperti pemilih, templat, gaya, dan konfigurasi lainnya.

import { Component } from '@angular/core';

@Component({
  selector: 'app-hello-world',
  template: `<h1>Hello, World!</h1>`,
  styles: ['h1 { color: blue; }']
})
export class HelloWorldComponent { }

Dalam contoh ini, dekorator @Component mendefinisikan komponen sederhana dengan templat yang menampilkan "Halo, Dunia!". Pemilih menentukan tag HTML khusus yang akan digunakan untuk komponen ini.

Menggunakan Dekorator @Injectable

Dekorator @Injectable digunakan untuk menentukan kelas layanan yang dapat disuntikkan ke komponen atau layanan lain. Dekorator ini merupakan bagian penting dari sistem injeksi dependensi Angular.

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class DataService {
  getData() {
    return ['Angular', 'TypeScript', 'Decorators'];
  }
}

Di sini, dekorator @Injectable membuat DataService tersedia untuk injeksi ketergantungan di seluruh aplikasi.

Menggunakan Dekorator @Input dan @Output

Dekorator @Input dan @Output digunakan untuk membuat properti input dan peristiwa output dalam komponen Angular. Dekorator ini umumnya digunakan untuk komunikasi komponen.

import { Component, Input, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'app-child',
  template: `
    <p>{{ message }}</p>
    <button (click)="sendMessage()">Send Message</button>
  `
})
export class ChildComponent {
  @Input() message: string;
  @Output() messageEvent = new EventEmitter();

  sendMessage() {
    this.messageEvent.emit('Hello from Child Component!');
  }
}

Dalam contoh ini, dekorator @Input digunakan untuk meneruskan data dari komponen induk ke komponen anak. Dekorator @Output digunakan untuk mengirim data dari komponen anak kembali ke komponen induk melalui suatu peristiwa.

Membuat Dekorator Kustom

Dekorator kustom dapat dibuat di Angular untuk menambahkan perilaku atau metadata tertentu ke kelas, metode, atau properti. Berikut ini adalah contoh dekorator kelas sederhana:

function LogClass(constructor: Function) {
  console.log('Class Decorator called:', constructor);
}

@LogClass
class MyService {
  constructor() {
    console.log('MyService created');
  }
}

Di sini, fungsi LogClass adalah dekorator khusus yang mencatat kelas ke konsol saat kelas tersebut ditetapkan. Menerapkan @LogClass ke MyService akan mencatat pesan selama pembuatannya.

Kesimpulan

Dekorator di Angular menyediakan cara yang ampuh untuk menambahkan metadata dan perilaku ke kelas, metode, properti, dan parameter. Memahami cara menggunakan dekorator bawaan seperti @Component, @Injectable, @Input, dan @Output sangat penting untuk pengembangan Angular yang efektif. Selain itu, dekorator kustom dapat dibuat untuk memenuhi kebutuhan khusus dalam suatu aplikasi, sehingga menambah fleksibilitas pada proses pengembangan.