Bagaimana cara membagi modul saya ke beberapa file di Typescript dengan node.js


Tampaknya informasi tentang bagaimana sebenarnya menyusun kode saat menulis Typescript hampir tidak ada.

Saya ingin membuat server di Node. Server ini memiliki dependensi eksternal seperti socket.io. Servernya akan terlalu besar untuk dimasukkan semuanya dalam satu file (seperti yang saya bayangkan biasanya terjadi) jadi saya pikir saya akan membaginya. Saya ingin setiap kelas berada di file terpisah dan saya ingin dapat menggunakannya di seluruh proyek tanpa harus melakukan sesuatu yang aneh seperti

import vector = require("vector.ts");
var vec = new vector.Vector();

Bagaimana cara saya melakukan itu? Sejauh ini tampaknya saya sedang berjuang di dua front. Ketika saya membuat tsc benar-benar mengompilasi, node mengeluh saat runtime, tetapi ketika saya memodifikasi kode agar node bisa berjalan, itu tidak mengompilasi.

Saya akan menghargai jika seseorang mau meluangkan waktu untuk meninjau ini langkah demi langkah.

Jawaban #1

Sebenarnya kamu bisa (sampai sekarang):

file: class1.ts:

export class Class1 {
  name: string;

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

file: class2.ts:

export class Class2 {
    name: string;
}

mengonsolidasikan file modul: classes.ts:

export { Class1 } from "./class1";
export { Class2 } from "./class2";

mengonsumsi file:

import { Class1, Class2 } from "./classes";

let c1 = new Class1("Herbert");
let c2 = new Class2();

Dengan cara ini Anda dapat memiliki satu kelas (atau antarmuka) per file. Dalam satu file modul penggabungan (classes.ts), Anda kemudian merujuk semua entitas yang membentuk "modul" Anda.

Sekarang Anda hanya perlu merujuk (mengimpor) satu file modul untuk mengakses semua kelas Anda. Anda masih memiliki pemisahan yang rapi antara file-file.

Semoga ini membantu siapa saja yang masih mencari.

Jawaban #2

Modul eksternal multi-file belum didukung di TypeScript.

Untuk rekomendasi struktur modul, halaman ini memiliki ringkasan yang baik tentang opsi-opsinya. Secara khusus, jika Anda memiliki tepat satu kelas per file, Anda bisa menggunakan export = sehingga baris kedua kode dalam contoh Anda akan menjadi var vec=new vector();, yang akan cukup mudah dimengerti.

Artikel terkait