Bahasa pemrograman: TypeScript 4.5 menyulap modul Node.js

Microsoft telah merilis beta pertama TypeScript 4.5. Rilis ini membuat penyesuaian untuk interaksi dengan modul ECMAScript di Node.js. Selain itu, ini menghilangkan panggilan fungsi akhir rekursif dalam kasus tertentu dan mengambil dua inovasi yang disediakan dalam standar ECMAScript.

Selain CommonJS Modules System (CJS) yang digunakan secara tradisional, Node.js sekarang juga dapat memproses ECMAScript Modules (ESM). Untuk interaksi, TypeScript 4.5 memimpin di bawah compilerOptions NS module-Pengaturan node12 dan nodenext A.

Mode modul baru memeriksa apakah ada .ts-., .Tsx-., .Js-. atau file .jsx adalah modul ES. Dalam hal ini, sistem memproses impor modul lain sesuai dengan pedoman ESM. Antara lain, jalur impor relatif harus berisi ekstensi nama file. Misalnya, spesifikasi import "./foo.js" saat saya di CJS import "./foo") tak berujung diperbolehkan.

Jenis modul terutama ditemukan di Node.js di satu sisi di package.json melalui entri "type": "module" Di mana "type": "commonjs" Deklarasikan sebagai modul ESM atau CJS. Selain itu, Node.js memungkinkan definisi eksplisit ekstensi file melalui .mjs untuk EMS dan .cjs untuk CJS. Demikian pula, TypeScript 4.5 memperkenalkan ekstensi .mts dan .cts.

Dua perubahan terkait dengan pengoptimalan TypeScript di bawah tenda. Dengan cara ini sistem mencoba mengenali apakah rekursi berpotensi berjalan tanpa batas waktu atau jika ekspansi tipe akan memakan waktu lama. Beberapa jenis dapat salah memicu penggunaan TypeScript heuristik untuk deteksi. Sebagai contoh, entri blog mencantumkan cuplikan kode yang menghilangkan spasi awal dari jenis tipe string:

type TrimLeft<T extends string> =
    T extends ` ${infer Rest}` ? TrimLeft<Rest> : T;

// Test = "hello" | "world"
type Test = TrimLeft<"   hello" | " world">;

READ  3 langkah untuk membuat konten video hebat di Glenn Prestia

Implementasi berfungsi untuk kode sampel. Namun, jika string memiliki banyak ruang di awal, deteksi heuristik mengarah ke pesan kesalahan

error: Type instantiation is excessively deep
and possibly infinite.

Dalam aplikasi tertentu, bagaimanapun, overhead kurang penting, karena fungsinya adalah rekursif akhir di cabang dan mengembalikan hasilnya secara langsung tanpa pemrosesan lebih lanjut. TypeScript 4.5 baru-baru ini menghapus panggilan fungsi terminal ketika cabang dari tipe bersyarat kembali menjadi tipe bersyarat. Dengan cara ini, tidak diperlukan instantiasi tambahan, yang berpotensi mengarah pada persyaratan memori tak terbatas dari fungsi rekursif.

TypeScript 4.5 juga memperkenalkan parameter baru --preserveValueImports yang mencegah penghapusan otomatis impor yang tampaknya tidak digunakan. Sebagai contoh, posting blog menggunakan potongan kode eval untuk memulihkan:

import { Animal } from "./animal.js";

eval("console.log(new Animal().isDangerous())");

Bahkan jika menggunakan eval di TypeScript dan JavaScript dipertanyakan karena alasan keamanan, contoh tersebut menggambarkan kasus di mana TypeScript mungkin secara keliru menganggap impor tidak perlu dan menghapusnya karena modul JavaScript digunakan dalam string. Hal yang sama berlaku untuk berinteraksi dengan kerangka kerja seperti Vue.js atau Svelte. Di sana, beberapa impor tidak langsung dikenali sebagai digunakan untuk sistem bangunan karena di script-Bagian-bagian yang terlibat.

Dengan dua inovasi, TypeScript mengambil saran ECMAScript yang belum ada dalam standar, tetapi direncanakan. Di satu sisi, TypeScript dapat memeriksa apakah suatu objek berisi bidang pribadi yang ditentukan di kelas saat ini:

class Person {
    #name: string;
    constructor(name: string) {
        this.#name = name;
    }

    equals(other: unknown) {
        return other &&
            typeof other === "object" &&
            #name in other && // <- this is new!
            this.#name === other.#name;
    }
}

READ  Dengan video! Resep dari Nasi Goreng dari Indonesia

Ini proposal ECMA terkait berjudul “Kontrol merek ergonomis untuk bidang pribadi” (secara kasar dapat diterjemahkan sebagai “Kontrol merek ergonomis untuk bidang pribadi”). Bidang pribadi dapat digunakan untuk memeriksa apakah itu memang turunan dari kelas, karena hanya ada dalam kasus ini.

Selain itu, Juga dimaksudkan agar ECMAScript dapat digunakan Impor pernyataan gunakan dalam TypeScript 4.5. Mereka memastikan bahwa file yang diimpor dalam format tertentu.

import obj from "./something.json" assert { type: "json" };

Namun, sistem pembangunan tidak mendukung verifikasi format konten yang sebenarnya, karena tanggung jawab untuk ini terletak pada browser atau waktu proses.

Inovasi lain dalam TypeScript 4.5 dapat ditemukan dari Blog Pengembangan Microsoft. Fase beta TypeScript 4.5 dijadwalkan selama enam minggu, dan versi finalnya diharapkan sesuai dengan peta jalan akan dirilis pada 16 November 2021.


(rm)

Ke halaman rumah

Written By
More from Munir Rad
Windjammers 2 sekarang tersedia • Nintendo Connect
Penerbit dan pengembang Dotemu (Teenage Mutant Ninja Turtles: Shredder’s Revenge, Taktik Metal...
Read More
Leave a comment

Alamat email Anda tidak akan dipublikasikan.