Skip to content

docs(i18n-id): Provide Indonesian translation for section 4-0/New TS Features #1228

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Oct 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
//// { compiler: { ts: "4.0.2" } }

// _Tuple_ adalah _array_ dimana urutan elemennya penting bagi
// sistem tipe, Anda dapat mempelajari lebih lanjut tentang _tuple_
// di example:tuples.

// Pada TypeScript versi 3.9, tipe dari sebuah _tuple_ mendapatkan
// kemampuan untuk memberikan nama pada elemen-elemen _array_.

// Sebagai contoh, Anda biasanya menulis lokasi garis lintang
// dan garis bujur dalam sebuah _tuple_:

type LokasiLama = [number, number]

const lokasi: LokasiLama[] = [
[40.7144, -74.006],
[53.6458, -1.785]
]

// Cara penulisan tersebut menyebabkan Anda kesulitan untuk membedakan
// nilai garis lintang dan garis bujur, sehingga Anda biasanya akan
// menamai _tuple_ tersebut sebagai LintangBujur.

// Pada TypeScript versi 4.0, Anda dapat menulis:

type LokasiBaru = [lintang: number, bujur: number]

const lokasiBaru: LokasiBaru[] = [
[52.3702, 4.8952],
[53.3498, -6.2603]
]

// Nama-nama yang telah dinyatakan pada _tuple_ akan muncul
// di editor ketika Anda menyorot angka 0 dan 1 pada akhir
// baris selanjutnya.
const lintangPertama = lokasiBaru[0][0]
const bujurPertama = lokasiBaru[0][1]

// Walaupun terkesan sangat sederhana, tujuan utama dari fitur
// tersebut adalah menjamin bahwa informasi tidak hilang
// ketika bekerja dengan sistem tipe. Sebagai contoh, ketika
// mengekstrak parameter dari sebuah fungsi menggunakan
// tipe perkakas `Parameter`:

function pindahkanKeTengahPeta(bujur: number, lintang: number) { }

// Pada TypeScript versi 4.0, cara penulisan ini tetap
// menyimpan informasi bujur dan lintang.
type parameterPindahkanKeTengahPeta = Parameters<typeof pindahkanKeTengahPeta>

// Pada TypeScript versi 3.9, tipe di atas akan ditulis sebagai:
type parameterLamaPindahkanKeTengahPeta = [number, number]

// Hal tersebut membuat beberapa manipulasi tipe yang rumit
// kehilangan informasi mengenai informasi parameter.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
//// { compiler: { ts: "4.0.2" } }

// Dikarenakan JavaScript memperbolehkan untuk menggunakan
// tipe data apapun, TypeScript tidak mendukung
// deklarasi tipe data pada sebuah galat (`Error()`)

try {
// ..
} catch (e) { }

// Secara historis, hal tersebut menandakan bahwa `e` dalam
// blok `catch` akan dianggap sebagai `any`. Anggapan tersebut
// memberikan kebebasan untuk mengakses properti apapun.
// Pada TypeScript versi 4.0, kami telah melonggarkan
// batasan pada pernyataan tipe pada klausa `catch` sehingga
// tipe `any` dan `unknown` merupakan tipe yang valid.

// Perilaku yang sama dengan `any`:
try {
// ..
} catch (e) {
e.stack;
}

// Perilaku eksplisit dengan `unknown`:

try {
// ..
} catch (e) {
// Anda tidak dapat menggunakan `e` sama sekali
// sampai sistem tipe data mengetahui tipe data dari `e`.
// Anda dapat mempelajari lebih lanjut mengenai
// hal tersebut melalui example:unknown-and-never.
e.stack;

if (e instanceof SyntaxError) {
e.stack;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
//// { compiler: { ts: "4.0.2" } }

// _Variadic tuples_ memberikan kemampuan pada _tuple_ untuk menangani
// operator _rest_ (...) untuk memberikan tipe data pada pemeriksa tipe
// data dengan cara yang mirip dengan tipe generik.

// _Variadic tuples_ merupakan topik yang rumit, sehingga Anda tidak perlu
// khawatir bila Anda merasa kebingungan. Contoh di bawah berdasarkan
// example:generic-functions dan example:tuples.

// Sebagai permulaan, di bawah ini merupakan sebuah _variadic tuple_ yang
// akan selalu memberikan prefiks pada _tuple_ lain dengan sebuah bilangan:

type AddMax<T extends unknown[]> = [max: number, ...rest: T];
// ^ Tipe generik digunakan untuk
// membatasi T
// ^ Operator `...` digunakan
// untuk mengetahui letak
// penggabungan

// Tipe data di atas dapat digunakan untuk komposisi:
type MaxMin = AddMax<[min: number]>
type MaxMinDiameter = AddMax<[min: number, diameter: number]>

// Hal yang sama juga digunakan setelah penggunaan _tuple_:
type SuffixDIContext<T extends unknown[]> = [...first: T, context: any];
type DIContainer = SuffixDIContext<[param: string]>

// Mekanisme ini dapat digabungkan dengan banyak parameter masukan.
// Sebagai contoh, fungsi di bawah ini menggabungkan dua buah _array_
// namun menggunakan '\0' sebagai karakter yang menjadi tanda
// dimana _array_ dimulai dan berakhir.
function joinWithNullTerminators<T extends unknown[], U extends unknown[]>(t: [...T], u: [...U]) {
return ['\0', ...t, '\0', ...u, '\0'] as const;
}

// TypeScript dapat menyimpulkan tipe data kembalian dari sebuah
// fungsi seperti berikut:
const result = joinWithNullTerminators(['variadic', 'types'], ["terminators", 3]);

//
// Perkakas ini memungkinkan kita untuk memberi tipe data
// pada sebuah fungsi seperti fungsi untuk _currying_
// yang merupakan sebuah konsep yang sering digunakan
// pada pemrograman fungsional:

function curry<T extends unknown[], U extends unknown[], R>(f: (...args: [...T, ...U]) => R, ...a: T) {
return (...b: U) => f(...a, ...b);
}

// Ada 3 parameter generik:
// - T: Kumpulan masukan yang digunakan pada fungsi _curry_
// - U: Kumpulan masukan yang tidak digunakan pada fungsi
// _curry_, dan harus diteruskan pada fungsi yang dikembalikan
// - R: Tipe kembalian dari fungsi yang diberikan

const sum = (left: number, right: number,) => left + right

const a = curry(sum, 1, 2)
const b = curry(sum, 1)(2)
const c = curry(sum)(1, 2)

// Anda dapat mempelajari lebih lanjut tentang _variadic tuples_,
// beserta dengan contoh kode programnya pada:
// https://github.com/microsoft/TypeScript/pull/39094