TypeScript'te Olay Yönetimi

TypeScript'te Olay Yönetimi

Bu makale TypeScript'te olay işlemenin nasıl yapıldığını açıklar.

Kod örnekleriyle olay işleme yöntemlerini ve özel olayları öğrenebilirsiniz.

YouTube Video

TypeScript'te Olay Yönetimi

TypeScript'te olay yönetimi, JavaScript'tekiyle aynı şekilde yapılır. Ancak TypeScript tip güvenliğini artırır ve uygun olay tipleri kullanarak olayları güvenli bir şekilde işlemenizi sağlar. Olay yönetiminin temeli, DOM öğelerine olay dinleyicileri eklemek ve kullanıcı işlemlerine yanıt olarak işlemleri gerçekleştirmektir.

Olay Dinleyicileri Ekleme

Olay dinleyicileri, DOM öğelerine addEventListener yöntemi kullanılarak eklenir. Örneğin, bir tıklama olayını yönetmek için şunları yaparsınız:.

1const button = document.getElementById('myButton');
2if (button) {
3    button.addEventListener('click', (event) => {
4        console.log('Button was clicked');
5    });
6}
  • Bu kodda, addEventListener belirtilen DOM öğesinde tıklama olayı için bir işlemci kaydetmek amacıyla kullanılır.

TypeScript'te Olay Tipleri

TypeScript'te, olay dinleyicisinde alınan event nesnesine uygun tip otomatik olarak atanır. event nesnesinin tipine bağlı olarak farklı özellikleri vardır, ancak temel tipi Event'tir.

Her olay için uygun tipi kullanarak, geliştirme sırasında TypeScript'in tip güvenliğinden faydalanabilirsiniz.

Ana Olay Tipleri

  1. Event Event, ortak olaylar için temel bir türdür. Form gönderimleri veya sayfa yüklemesinin tamamlanması gibi durumlarda kullanılır.
1const form = document.getElementById('myForm');
2if (form) {
3    form.addEventListener('submit', (event: Event) => {
4        event.preventDefault();  // Prevent the default form submission
5        console.log('Form was submitted');
6    });
7}
  • Bu kod formun gönderme olayını algılar, varsayılan gönderme işlemini engeller ve bunun yerine konsola bir mesaj yazdırır.
  1. MouseEvent

    MouseEvent, tıklama ve fare hareketi gibi fare ile ilgili işlemlere ait bir olay türüdür. Fare koordinatları ve hangi düğmenin tıklandığı hakkında bilgi alabilirsiniz.

1const button = document.getElementById('myButton');
2if (button) {
3    button.addEventListener('click', (event: MouseEvent) => {
4        // Log the click position
5        console.log(`Click position: X=${event.clientX}, Y=${event.clientY}`);
6    });
7}
  • Bu kod, butona tıklandığında farenin koordinatlarını alır ve konsolda gösterir.
  1. KeyboardEvent KeyboardEvent, klavye girişi ile ilgili bir olay türüdür. Basılan tuşa ve değiştirici tuşların (Shift, Alt, Ctrl, vb.) durumuna erişebilirsiniz.
1document.addEventListener('keydown', (event: KeyboardEvent) => {
2    // Log the pressed key
3    console.log(`Key pressed: ${event.key}`);
4    if (event.ctrlKey) {
5        // Log that the Ctrl key was pressed
6        console.log('Ctrl key was pressed');
7    }
8});
  • Bu kod, basılan tuşun adını görüntüler ve Ctrl tuşu basılıysa, bu bilgiyi de konsola yazdırır.
  1. InputEvent InputEvent, giriş alanlarında yapılan değişikliklerle ilgili bir olay türüdür. Bir metin alanı veya textarea'nın değeri değiştiğinde kullanılır.
1const input = document.getElementById('myInput') as HTMLInputElement;
2if (input) {
3    input.addEventListener('input', (event: InputEvent) => {
4        // Log the entered value
5        console.log(`Entered value: ${input.value}`);
6    });
7}
  • Bu kod, giriş alanının değeri her değiştiğinde içeriğini konsolda gösterir.
  1. FocusEvent FocusEvent, bir öğe odağı aldığında veya kaybettiğinde meydana gelen bir olay türüdür.
 1const input = document.getElementById('myInput');
 2if (input) {
 3    input.addEventListener('focus', (event: FocusEvent) => {
 4        // Log when the input gains focus
 5        console.log('Focused');
 6    });
 7
 8    input.addEventListener('blur', (event: FocusEvent) => {
 9        // Log when the input loses focus
10        console.log('Blurred');
11    });
12}
  • Bu kod, giriş alanı odaklandığında konsola "Focused" ve odak kaybolduğunda "Blurred" yazdırır.

Özel Olayları Tip Belirtmeyle (Type Assertion) Yönetme

Özel olaylarda veya TypeScript'in tip çıkarımı doğru çalışmadığında, tipi açıkça type assertion ile belirtebilirsiniz.

Örneğin, belirli bir input alanı (HTMLInputElement) için bir olayı yönetmek için tipi şöyle belirtirsiniz:.

1const input = document.getElementById('myInput') as HTMLInputElement;
2if (input) {
3    input.addEventListener('input', (event: Event) => {
4        const target = event.target as HTMLInputElement;
5        // Log the entered value
6        console.log(`Entered value: ${target.value}`);
7    });
8}
  • Bu kod, olay hedefini bir HTMLInputElement olarak ele almak için tip onaylaması kullanır ve değerini konsolda gösterir.

Olay Dinleyicilerini Kaldırma

Olay dinleyicilerini removeEventListener ile kaldırabilirsiniz. Bunun için, başlangıçta eklenen aynı olay işleyicisini (event handler) iletmeniz gerekir.

 1const button = document.getElementById('myButton');
 2
 3const handleClick = (event: MouseEvent) => {
 4    // Log when the button is clicked
 5    console.log('Button was clicked');
 6};
 7
 8if (button) {
 9    button.addEventListener('click', handleClick);
10
11    // Remove the event listener later
12    button.removeEventListener('click', handleClick);
13}
  • Bu kod, butona bir tıklama olayı dinleyicisi ekler ve aynı işleyiciyi belirterek daha sonra kaldırır.

Özel Olaylar Oluşturma

TypeScript'te, standart olayların yanı sıra özel olaylar da oluşturabilir ve tetikleyebilirsiniz. Özel bir olay oluşturmak için CustomEvent sınıfını, tetiklemek için ise dispatchEvent metodunu kullanın.

 1const customEvent = new CustomEvent('myCustomEvent', { detail: { name: 'TypeScript' } });
 2const div = document.getElementById('myDiv');
 3
 4if (div) {
 5    div.addEventListener('myCustomEvent', (event: CustomEvent) => {
 6        // Log when the custom event is fired
 7        console.log(`Custom event was triggered: ${event.detail.name}`);
 8    });
 9
10    div.dispatchEvent(customEvent);  // Dispatch the custom event
11}
  • Bu kod, CustomEvent kullanarak özel bir olay oluşturur, onu öğeye gönderir ve ayrıntılarını konsolda gösterir.

Olay Yayılımını (Propagasyon) Kontrol Etme

Bir olay oluştuğunda, varsayılan olarak bubble (üst öğelere doğru yayılır). Bunu önlemek için event.stopPropagation() kullanın. Tarayıcının varsayılan davranışını engellemek için preventDefault() da kullanabilirsiniz.

 1const button = document.getElementById('myButton');
 2if (button) {
 3    button.addEventListener('click', (event: MouseEvent) => {
 4        event.preventDefault();  // Prevent the default action
 5        event.stopPropagation();  // Stop the event propagation
 6
 7        // Log that event handling has been customized
 8        console.log('Custom event handling');
 9    });
10}
  • Bu kod, butona tıklandığında varsayılan işlemi devre dışı bırakır, olayın kabarcıklanmasını (bubbling) durdurur ve özel işlemi gerçekleştirir.

Özet

TypeScript'te olay yönetimi temelde JavaScript ile aynıdır, ancak doğru tip tanımları ile olay nesneleri ve DOM öğeleriyle güvenle ve sağlam bir şekilde çalışabilirsiniz. Olay dinleyicileri ekleyip kaldırarak, olay tiplerini uygulayarak ve tip belirtmeyle daha anlaşılır ve hataya daha az açık bir olay yönetimi sağlayabilirsiniz.

Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.

YouTube Video