|
| 1 | +//// { order: 1, target: "ES5" } |
| 2 | + |
| 3 | +// JavaScript menambahkan sintaks impor dan ekspor pada tahun 2016 |
| 4 | +// dan TypeScript memiliki dukungan penuh untuk sintaks ini yang |
| 5 | +// berfungsi untuk menghubungkan berkas dengan berkas lain dan |
| 6 | +// pada modul eksternal lain. TypeScript memperluas sintaks |
| 7 | +// impor dan ekspor dengan memperbolehkan tipe data untuk |
| 8 | +// diimpor dan diekspor pada kode program. |
| 9 | + |
| 10 | +// Berikut merupakan kode program untuk mengimpor sebuah modul. |
| 11 | + |
| 12 | +import { danger, message, warn, DangerDSLType } from "danger"; |
| 13 | + |
| 14 | +// Kode di atas berusaha mengimpor beberapa impor bernama |
| 15 | +// dari sebuah modul NodeJS bernama `danger`. Walaupun ada |
| 16 | +// lebih dari empat objek yang dapat diimpor, namun hanya |
| 17 | +// empat objek tersebut yang akan diimpor. |
| 18 | + |
| 19 | +// Dengan mengimpor objek secara spesifik, perkakas yang |
| 20 | +// tersedia dapat menghapus kode-kode yang tidak dibutuhkan |
| 21 | +// pada aplikasi Anda, dan membantu Anda untuk mengetahui |
| 22 | +// impor apa yang digunakan pada sebuah berkas. |
| 23 | + |
| 24 | +// Pada contoh di atas: `danger`, `message`. dan `warn` |
| 25 | +// merupakan impor JavaScript - sedangkan `DangerDSLType` |
| 26 | +// merupakan sebuah antarmuka. |
| 27 | + |
| 28 | +// TypeScript mengizinkan pengembang untuk mendokumentasikan |
| 29 | +// kode program yang mereka buat menggunakan JSDoc, sehingga |
| 30 | +// dokumentasi juga dapat diimpor. Sebagai contoh, apabila |
| 31 | +// Anda menyorot pada bagian-bagian kode di bawah, Anda |
| 32 | +// dapat melihat penjelasan mengenai bagian tersebut. |
| 33 | + |
| 34 | +danger.git.modified_files; |
| 35 | + |
| 36 | +// Apabila Anda ingin mengetahui cara untuk menyediakan |
| 37 | +// anotasi pada dokumentasi, silahkan baca pada |
| 38 | +// example:jsdoc-support |
| 39 | + |
| 40 | +// Cara lain untuk mengimpor kode adalah dengan menggunakan |
| 41 | +// ekspor bawaan milik modul. Berikut merupakan contoh |
| 42 | +// dari penggunaan ekspor bawaan pada modul `debug`, yang |
| 43 | +// mengekspos sebuah fungsi yang membuat sebuah fungsi pencatatan. |
| 44 | + |
| 45 | +import debug from "debug"; |
| 46 | +const log = debug("playground"); |
| 47 | +log("Started running code"); |
| 48 | + |
| 49 | +// Karena sifat dari ekspor bawaan yang tidak memiliki |
| 50 | +// nama yang tetap, ekspor-ekspor bawaan dapat membingungkan |
| 51 | +// perkakas analisis seperti dukungan _refactoring_ pada |
| 52 | +// TypeScript, namun ekspor bawaan tetap memiliki kegunaan. |
| 53 | + |
| 54 | +// Karena ada sejarah panjang dari impor dan ekspor kode |
| 55 | +// dalam JavaScript, terdapat sebuah bagian yang membingungkan |
| 56 | +// dari ekspor bawaan: Beberapa ekspor memiliki dokumentasi |
| 57 | +// yang menyatakan bahwa Anda dapat menulis sebuah impor sebagai |
| 58 | +// berikut: |
| 59 | + |
| 60 | +import req from "request"; |
| 61 | + |
| 62 | +// Namun, impor tersebut akan gagal, kemudian Anda menemukan |
| 63 | +// sebuah pertanyaan pada StackOverflow yang menyarankan |
| 64 | +// Anda untuk mengimpor seperti berikut: |
| 65 | + |
| 66 | +import * as req from "request"; |
| 67 | + |
| 68 | +// Dan cara tersebut akan berhasil. Alasan mengenai keberhasilan |
| 69 | +// tersebut akan dibahas pada bagian akhir dari dokumentasi ini. |
| 70 | + |
| 71 | +// Supaya dapat diimpor, kode harus dapat diekspor. Cara modern |
| 72 | +// untuk menyatakan ekspor adalah menggunakan kata kunci `export`. |
| 73 | + |
| 74 | +/** Jumlah stiker yang tersedia */ |
| 75 | +export const jumlahStiker = 11; |
| 76 | + |
| 77 | +// Ekspor tersebut dapat diimpor pada berkas lain dengan cara: |
| 78 | +// |
| 79 | +// import { jumlahStiker } from "./path/to/file" |
| 80 | + |
| 81 | +// Anda dapat menulis `export` sebanyak mungkin pada sebuah |
| 82 | +// berkas sesuai keinginan Anda. Ekspor bawaan juga dapat |
| 83 | +// dinyatakan dengan cara yang sama. |
| 84 | + |
| 85 | +/** Menghasilkan stiker untuk Anda */ |
| 86 | +const pembuatStiker = () => { }; |
| 87 | +export default pembuatStiker; |
| 88 | + |
| 89 | +// Ekspor tersebut dapat diimpor pada berkas lain dengan cara: |
| 90 | +// |
| 91 | +// import perolehStiker from "./path/to/file" |
| 92 | +// |
| 93 | +// Impor bawaan dapat dinamai sesuai keinginan pada berkas |
| 94 | +// tempat bagian tersebut diimpor. |
| 95 | + |
| 96 | +// Ada cara-cara lain untuk melakukan impor, namun contoh-contoh |
| 97 | +// di atas merupakan cara-cara yang umum digunakan pada kode |
| 98 | +// program modern. Membahas seluruh cara untuk mengimpor |
| 99 | +// kode merupakan sebuah topik yang panjang pada buku pegangan berikut: |
| 100 | +// |
| 101 | +// https://www.typescriptlang.org/docs/handbook/modules.html |
| 102 | + |
| 103 | +// Namun, untuk menjawab pertanyaan terakhir, apabila Anda |
| 104 | +// melihat kode JavaScript pada contoh ini - Anda akan melihat: |
| 105 | + |
| 106 | +// var pembuatStiker = function () { }; |
| 107 | +// exports.default = pembuatStiker; |
| 108 | + |
| 109 | +// Kode di atas akan menetapkan properti bawaan dari objek `exports` |
| 110 | +// menjadi `pembuatStiker`. Ada kode-kode lain yang menetapkan |
| 111 | +// `exports` bawaan menjadi sebuah fungsi. |
| 112 | +// |
| 113 | +// TypeScript memilih untuk berpegang pada spesifikasi ECMAScript |
| 114 | +// untuk menangani kasus-kasus tersebut, yaitu dengan melemparkan |
| 115 | +// sebuah galat. Namun, terdapat opsi `esModuleInterop` pada kompilator |
| 116 | +// untuk menangani kasus-kasus tersebut secara otomatis. |
| 117 | +// |
| 118 | +// Apabila Anda mengaktifkan opsi tersebut pada contoh ini, Anda |
| 119 | +// akan melihat bahwa galat akan hilang. |
0 commit comments