unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
I/O

I/O #

Operasi I/O (Input/Output) dalam TypeScript mirip dengan operasi I/O dalam JavaScript, karena TypeScript adalah superset dari JavaScript. Ini berarti bahwa operasi I/O yang dilakukan dalam TypeScript pada dasarnya sama dengan yang dilakukan dalam JavaScript, baik di lingkungan Node.js untuk sisi server maupun di browser untuk sisi klien. Berikut adalah penjelasan mengenai operasi I/O di TypeScript:

Operasi I/O di Lingkungan Node.js #

Di lingkungan Node.js, TypeScript dapat digunakan untuk membaca dari atau menulis ke file, mengakses jaringan, atau menangani input pengguna melalui terminal.

Baca dan Tulis File #

Anda dapat menggunakan modul bawaan fs (file system) di Node.js untuk melakukan operasi I/O pada file.

Contoh Membaca File:

import * as fs from 'fs';

fs.readFile('example.txt', 'utf8', (err, data) => {
    if (err) {
        console.error('Error reading file:', err);
        return;
    }
    console.log('File content:', data);
});
  • fs.readFile digunakan untuk membaca konten file. Ini adalah operasi asinkron, dan hasilnya dikembalikan dalam callback.
  • utf8 adalah encoding yang digunakan untuk membaca file sebagai string.

Contoh Menulis File:

import * as fs from 'fs';

const data = 'Hello, TypeScript!';
fs.writeFile('example.txt', data, 'utf8', (err) => {
    if (err) {
        console.error('Error writing file:', err);
        return;
    }
    console.log('File has been written');
});
  • fs.writeFile digunakan untuk menulis data ke dalam file. Ini juga merupakan operasi asinkron.

Membaca Input dari Terminal #

Untuk membaca input dari terminal, Anda bisa menggunakan modul readline di Node.js.

Contoh:

import * as readline from 'readline';

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.question('What is your name? ', (answer) => {
    console.log(`Hello, ${answer}!`);
    rl.close();
});
  • readline.createInterface digunakan untuk membuat antarmuka membaca dan menulis dari dan ke terminal.
  • rl.question digunakan untuk mengajukan pertanyaan kepada pengguna dan menangkap input mereka.

Operasi I/O di Lingkungan Browser #

Di lingkungan browser, operasi I/O lebih terbatas dibandingkan dengan Node.js. Umumnya, operasi I/O yang dilakukan di browser melibatkan interaksi dengan pengguna (seperti mengakses input dari formulir) dan komunikasi dengan server (seperti permintaan HTTP).

Mengambil Input dari Formulir #

Anda dapat mengakses input dari elemen HTML seperti formulir dan mengolahnya dalam TypeScript.

Contoh:

const inputElement = document.getElementById('nameInput') as HTMLInputElement;
const submitButton = document.getElementById('submitButton');

submitButton.addEventListener('click', () => {
    const name = inputElement.value;
    console.log(`Hello, ${name}!`);
});
  • document.getElementById digunakan untuk mengakses elemen HTML berdasarkan ID-nya.
  • addEventListener digunakan untuk menambahkan event listener ke elemen, seperti mendengarkan klik tombol.

Mengirim dan Menerima Data dengan Fetch API #

Fetch API digunakan untuk melakukan permintaan HTTP dari browser ke server. Ini adalah cara umum untuk melakukan operasi I/O jaringan di browser.

Contoh:

fetch('https://api.example.com/data')
    .then(response => {
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        return response.json();
    })
    .then(data => {
        console.log('Data received:', data);
    })
    .catch(error => {
        console.error('Fetch error:', error);
    });
  • fetch digunakan untuk melakukan permintaan HTTP asinkron. Ini mengembalikan promise yang akan diselesaikan dengan objek Response.
  • response.json() digunakan untuk memproses respons sebagai JSON.

Operasi I/O Asinkron dan Sinkron #

Operasi I/O di TypeScript (seperti dalam JavaScript) bisa bersifat asinkron atau sinkron, terutama di Node.js.

  • Asinkron: Menggunakan callback, promises, atau async/await untuk menangani hasil operasi tanpa memblokir eksekusi kode lainnya.

    Contoh dengan Async/Await:

    import * as fs from 'fs/promises';
    
    async function readFile() {
        try {
            const data = await fs.readFile('example.txt', 'utf8');
            console.log('File content:', data);
        } catch (err) {
            console.error('Error reading file:', err);
        }
    }
    
    readFile();
    
    • fs.readFile yang menggunakan promises, dikombinasikan dengan async/await untuk menulis kode asinkron yang lebih bersih.
  • Sinkron: Melakukan operasi yang memblokir eksekusi sampai operasi selesai. Ini biasanya dihindari karena dapat memengaruhi kinerja.

    Contoh Sinkron:

    import * as fs from 'fs';
    
    try {
        const data = fs.readFileSync('example.txt', 'utf8');
        console.log('File content:', data);
    } catch (err) {
        console.error('Error reading file:', err);
    }
    
    • fs.readFileSync digunakan untuk membaca file secara sinkron.

Kesimpulan #

Operasi I/O dalam TypeScript sangat bergantung pada lingkungan eksekusi (Node.js atau browser). Di Node.js, TypeScript memanfaatkan modul seperti fs untuk operasi file dan readline untuk interaksi terminal, sementara di browser, operasi I/O lebih terkait dengan interaksi pengguna dan jaringan menggunakan DOM API dan Fetch API. Pendekatan asinkron lebih disukai dalam banyak kasus untuk meningkatkan kinerja dan responsivitas aplikasi.

« Multithreading
Socket »