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 objekResponse
.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 denganasync/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.