Peta strategi untuk pengembang JavaScript dan TypeScript mempelajari C#
C#, TypeScript, dan JavaScript adalah anggota keluarga bahasa C. Kesamaan antara bahasa membantu Anda menjadi produktif dengan cepat di C#.
- Sintaks serupa: JavaScript, TypeScript, dan C# berada dalam keluarga bahasa C. Kesamaan itu berarti Anda sudah dapat membaca dan memahami C#. Ada beberapa perbedaan, tetapi sebagian besar sintaksnya sama dengan JavaScript, dan C. Kurung kurawal dan titik koma sudah akrab. Pernyataan kontrol seperti
if
,else
,switch
sama. Pernyataan perulangan darifor
,while
, dando
...while
sama. Kata kunci yang sama untukclass
daninterface
berada di C# dan TypeScript. Pengubah akses di TypeScript dan C#, daripublic
keprivate
, sama. - Token
=>
: Semua bahasa mendukung definisi fungsi ringan. Di C#, ekspresi tersebut disebut sebagai ekspresi lambda, di JavaScript, biasanya disebut fungsi panah. - Hierarki fungsi: Ketiga bahasa mendukung fungsi lokal, yang merupakan fungsi yang ditentukan dalam fungsi lain.
- Asinkron / Tunggu: Ketiga bahasa berbagi kata kunci dan
await
yang samaasync
untuk pemrograman asinkron. - Pengumpulan sampah: Ketiga bahasa mengandalkan pengumpul sampah untuk manajemen memori otomatis.
- Model peristiwa: Sintaks C#
event
mirip dengan model JavaScript untuk peristiwa model objek dokumen (DOM). - Manajer paket: NuGet adalah manajer paket yang paling umum untuk C# dan .NET, mirip dengan npm untuk aplikasi JavaScript. Pustaka C# dikirimkan dalam rakitan.
Saat Anda terus mempelajari C#, Anda akan mempelajari konsep yang bukan bagian dari JavaScript. Beberapa konsep ini mungkin sudah tidak asing bagi Anda jika Anda menggunakan TypeScript:
- C# Type System: C# adalah bahasa yang sangat ditik. Setiap variabel memiliki jenis, dan jenis tersebut tidak dapat berubah. Anda menentukan
class
ataustruct
mengetikan. Anda dapat menentukaninterface
definisi yang menentukan perilaku yang diterapkan oleh jenis lain. TypeScript mencakup banyak konsep ini, tetapi karena TypeScript dibangun di JavaScript, sistem jenis tidak seketat. - Pencocokan pola: Pencocokan pola memungkinkan pernyataan dan ekspresi kondisional ringkas berdasarkan bentuk struktur data yang kompleks. Ekspresi
is
memeriksa apakah variabel "adalah" beberapa pola. Ekspresi berbasisswitch
pola memberikan sintaks yang kaya untuk memeriksa variabel dan membuat keputusan berdasarkan karakteristiknya. - Interpolasi string dan literal string mentah: Interpolasi string memungkinkan Anda menyisipkan ekspresi yang dievaluasi dalam string, daripada menggunakan pengidentifikasi posisi. Literal string mentah menyediakan cara untuk meminimalkan urutan escape dalam teks.
- Jenis nullable dan non-nullable: C# mendukung jenis nilai nullable, dan jenis referensi nullable dengan menambahkan akhiran
?
ke jenis . Untuk jenis nullable, pengkompilasi memperingatkan Anda jika Anda tidak memeriksanull
sebelum mendereferensikan ekspresi. Untuk jenis yang tidak dapat diubah ke null, pengkompilasi memperingatkan Anda jika Anda mungkin menetapkannull
nilai ke variabel tersebut. Fitur-fitur ini dapat meminimalkan aplikasi Anda melemparkan System.NullReferenceException. Sintaks mungkin sudah tidak asing lagi dari penggunaan?
TypeScript untuk properti opsional. - LINQ: Kueri terintegrasi bahasa (LINQ) menyediakan sintaks umum untuk mengkueri dan mengubah data, terlepas dari penyimpanannya.
Saat Anda mempelajari lebih banyak perbedaan lain menjadi jelas, tetapi banyak dari perbedaan tersebut lebih kecil dalam cakupan.
Beberapa fitur dan idiom yang sudah dikenal dari JavaScript dan TypeScript tidak tersedia di C#:
- jenis dinamis: C# menggunakan pengetikan statis. Deklarasi variabel mencakup jenis, dan jenis tersebut tidak dapat berubah. Ada
dynamic
jenis dalam C# yang menyediakan pengikatan runtime. - Pewarisan prototipal: Warisan C# adalah bagian dari deklarasi jenis. Deklarasi C#
class
menyatakan kelas dasar apa pun. Di JavaScript, Anda dapat mengatur__proto__
properti untuk mengatur jenis dasar pada instans apa pun. - Bahasa yang ditafsirkan: Kode C# harus dikompilasi sebelum Anda menjalankannya. Kode JavaScript dapat dijalankan langsung di browser.
Selain itu, beberapa fitur TypeScript lainnya tidak tersedia di C#:
- Jenis union: C# tidak mendukung jenis union. Namun, proposal desain sedang berlangsung.
- Dekorator: C# tidak memiliki dekorator. Beberapa dekorator umum, seperti
@sealed
kata kunci yang dipesan di C#. Dekorator umum lainnya mungkin memiliki Atribut yang sesuai. Untuk dekorator lain, Anda dapat membuat atribut Anda sendiri. - Sintaks yang lebih pemaaf: Pengkompilasi C# mengurai kode secara lebih ketat daripada yang diperlukan JavaScript.
Jika Anda membangun aplikasi web, Anda harus mempertimbangkan untuk menggunakan Blazor untuk membangun aplikasi Anda. Blazor adalah kerangka kerja web tumpukan penuh yang dibuat untuk .NET dan C#. Komponen Blazor dapat berjalan di server, sebagai rakitan .NET, atau pada klien menggunakan WebAssembly. Blazor mendukung interop dengan pustaka JavaScript atau TypeScript favorit Anda.