我有一個Node.js項目,最近我從ECMAScript 6兼容的JavaScript轉換爲TypeScript。我仍然不完全熟悉TypeScript和ES6如何交互,特別是關於命名空間和類型。TypeScript ES6命名空間
我在我的項目中有一個名爲sql
的子文件夾,它聽起來會導出一些函數來與項目的MySQL數據庫進行交互。我想在Sql.Models
命名空間中組織我的數據庫模型類型,以便它們可以被引用,例如Sql.Models.User
。我希望我的模型在sql
文件夾中的一個或多個.d.ts
文件中聲明,但我無法弄清楚如何正確組織這些文件,以便這些類型可以在其他地方引用。我顯然不能require
或import
a .d.ts
文件;這不是有效的TypeScript操作。如何在另一個與ES6兼容的TypeScript模塊中使用在.d.ts
文件中聲明的類型Sql.Models.User
?
當我這樣設置時,我無法從另一個具有根級別名稱空間'Sql'的文件訪問'Sql.Models'。也許我對C#工作方式的想法太多了,其中多個文件可以參與命名空間。 我想有一個類提供'Sql'命名空間,並且是我項目中需要的其他人的唯一文件。它將定義一些常見的功能,例如'query'。但是我也想要提供其他名稱空間,例如上面描述的模型,它們都是'Sql'命名空間的子節點。 – briman0094
我的理解是你想擁有一個名爲'Sql'的命名空間和另一個名爲'Sql.Models'的子命名空間嗎? –
這是正確的。我認爲我設法通過在'sql.ts'旁邊有一個'models.ts'文件來導出模型接口,然後將它們導入'sql.ts'並將它們重新導出到它們的適當命名空間中文件('import * as models from「./models」'然後後面'導出命名空間Sql {導出命名空間Models {export type User = models.User;}}'。這不是我想要的漂亮,但是它工作併產生我想要的最終結果。 – briman0094