Modul dalam TypeScript
Artikel ini menjelaskan modul dalam TypeScript.
YouTube Video
Modul dalam TypeScript
Modul dalam TypeScript adalah fitur penting untuk meningkatkan kegunaan ulang dan pemeliharaan kode. Seperti JavaScript, TypeScript juga didasarkan pada sistem modul ECMAScript 2015 (ES6), tetapi fitur utamanya adalah kemampuannya untuk memanfaatkan sistem tipe TypeScript.
Apa itu Modul?
Modul adalah sistem untuk mengelompokkan kode terkait dalam satu unit yang dapat diimpor dan digunakan kembali di file lain. Dalam TypeScript, setiap file memiliki cakupan sendiri untuk mengenkapsulasi kode, mencegahnya memengaruhi file lain. Ini membantu menghindari tabrakan kode dan memudahkan pemeliharaan.
Modul Internal dan Eksternal
- Modul Internal (Namespace): Metode definisi modul yang digunakan dalam TypeScript 1.5 dan sebelumnya, sekarang tidak lagi disarankan. Sekarang dianggap sebagai 'namespace.'.
- Modul Eksternal: Standar saat ini, berdasarkan sistem modul ES6. Bagian ini terutama menjelaskan modul eksternal.
Cara Mengekspor Modul
Saat membuat modul, ekspor diperlukan untuk memungkinkan akses dari luar. Dalam TypeScript, Anda dapat mengekspor nilai, fungsi, kelas, dll. menggunakan kata kunci export
. Ada dua jenis ekspor utama.
Ekspor Bernama
Digunakan untuk melakukan banyak ekspor, memungkinkan pihak pengimpor memilih dan menggunakan yang spesifik.
1// mathUtils.ts
2export const pi: number = 3.14159;
3
4export function add(x: number, y: number): number {
5 return x + y;
6}
7
8export function subtract(x: number, y: number): number {
9 return x - y;
10}
Ekspor Default
Digunakan ketika Anda ingin seluruh modul memiliki satu ekspor default. Ekspor default diekspor tanpa nama, memungkinkan pihak pengimpor menerimanya dengan nama apa pun.
1// calculator.ts
2export default class Calculator {
3 add(x: number, y: number): number {
4 return x + y;
5 }
6
7 subtract(x: number, y: number): number {
8 return x - y;
9 }
10}
Cara Mengimpor Modul
Untuk menggunakan modul, Anda mengimpor nilai, fungsi, kelas, dll. dari dalam modul menggunakan kata kunci import
.
Impor Bernama
Ketika mengimpor elemen tertentu dari ekspor bernama, gunakan kurung kurawal {}
.
1// main.ts
2import { pi, add, subtract } from './mathUtils';
3
4console.log(`Value of pi: ${pi}`);
5console.log(`Addition: ${add(10, 5)}`);
6console.log(`Subtraction: ${subtract(10, 5)}`);
Impor Default
Ketika mengimpor ekspor default, Anda dapat menerimanya dengan nama apa saja.
1// main.ts
2import Calculator from './calculator';
3
4const calculator = new Calculator();
5console.log(`Addition: ${calculator.add(10, 5)}`);
6console.log(`Subtraction: ${calculator.subtract(10, 5)}`);
Alias Impor
Untuk menghindari bentrok nama atau memperpendek nama yang panjang, Anda dapat mengimpor dengan alias.
1// main.ts
2import { add as addition, subtract as subtraction } from './mathUtils';
3
4console.log(`Addition: ${addition(10, 5)}`);
5console.log(`Subtraction: ${subtraction(10, 5)}`);
Perbedaan Antara Modul dan Namespace
Namespace (namespace
) adalah struktur modul internal yang digunakan pada awal TypeScript untuk mengelompokkan kode bersama. Namun, modul ES6 sekarang direkomendasikan, dan namespace jarang diperlukan.
Namespace dapat didefinisikan dalam file yang sama atau di beberapa file, dan karena dapat diperluas secara global, pengelolaan dependensi bisa menjadi sulit. Sebaliknya, modul memiliki cakupan terpisah per file dan memiliki dependensi yang jelas, menjadikannya metode yang lebih modern dan aman.
1// Example of a namespace
2namespace Geometry {
3 export function calculateArea(radius: number): number {
4 return Math.PI * radius * radius;
5 }
6}
7
8// Can be used directly without importing the module (not recommended)
9const area: number = Geometry.calculateArea(5);
10console.log(`Area: ${area}`);
Resolusi Modul TypeScript
Dalam TypeScript, ada dua strategi untuk resolusi modul.
- Resolusi Modul Node: Metode resolusi standar yang digunakan dalam lingkungan Node.js yang menyelesaikan modul dengan mencari di folder
node_modules
. - Resolusi Modul Klasik: Metode resolusi milik TypeScript yang melakukan pencarian lebih fleksibel, tetapi tidak sering digunakan saat ini.
Biasanya, resolusi modul Node digunakan dan diaktifkan secara default kecuali ditentukan lain di file konfigurasi.
Contoh Praktis
Akhirnya, sebuah contoh ditampilkan tentang penerapan dan penggunaan kembali fungsi komputasi menggunakan modul.
mathUtils.ts
1export const pi: number = 3.14159;
2
3export function multiply(x: number, y: number): number {
4 return x * y;
5}
6
7export function divide(x: number, y: number): number {
8 if (y === 0) {
9 throw new Error("Cannot divide by zero");
10 }
11 return x / y;
12}
calculator.ts
1import { multiply, divide } from './mathUtils';
2
3export default class Calculator {
4 multiplyNumbers(x: number, y: number): number {
5 return multiply(x, y);
6 }
7
8 divideNumbers(x: number, y: number): number {
9 return divide(x, y);
10 }
11}
main.ts
1import Calculator from './calculator';
2
3const calculator = new Calculator();
4
5const result1: number = calculator.multiplyNumbers(10, 5);
6console.log(`Multiplication: ${result1}`);
7
8const result2: number = calculator.divideNumbers(10, 2);
9console.log(`Division: ${result2}`);
Ringkasan
Sistem modul TypeScript adalah alat yang ampuh untuk mengatur kode, meningkatkan kegunaan kembali, dan meningkatkan pemeliharaan. Penggunaan modul eksternal berdasarkan modul ES6 sangat disarankan, dan menggunakan kata kunci export
dan import
memungkinkan ekspor dan impor modul dengan mudah.
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.