首頁 > web前端 > js教程 > 主體

如何透過 TypeScript 外部模組有效使用命名空間?

Mary-Kate Olsen
發布: 2024-11-10 13:39:02
原創
370 人瀏覽過

How Do I Use Namespaces Effectively with TypeScript External Modules?

如何將命名空間與 TypeScript 外部模組一起使用?

問題:

您有使用 TypeScript 外部命名空間的程式碼模組,但您遇到錯誤或意外行為。這是您的程式碼:

// baseTypes.ts
export namespace Living.Things {
  export class Animal {
    move() { /* ... */ }
  }
  export class Plant {
    photosynthesize() { /* ... */ }
  }
}

// dog.ts
import b = require('./baseTypes');

export namespace Living.Things {
  // Error, can't find name 'Animal', ??
  export class Dog extends Animal {
    woof() { }
  }
}

// tree.ts
// Error, can't use the same name twice, ??
import b = require('./baseTypes');
import b = require('./dogs');

namespace Living.Things {
  // Why do I have to write b.Living.Things.Plant instead of b.Plant??
  class Tree extends b.Living.Things.Plant {
  }
}
登入後複製

糖果杯類比:

想像在紙上整理糖果。如果每張紙都是一個單獨的模組,那麼在每張紙上創建一個標有“A”的杯子並沒有什麼幫助——這就像創建額外的步驟而沒有實際組織糖果一樣。

無杯子:

不要使用命名空間,請考慮像這樣編寫程式碼:

// Mod1.ts
export class Twix { ... }

// Mod2.ts
export class PeanutButterCup { ... }

// Mod3.ts
export class KitKat { ... }
登入後複製

這會創建一個更簡單的結構,而無需需要不必要的命名空間。

命名空間不適合模組的原因:

  • 組織:檔案系統組織解決了這個需求。
  • 名稱衝突:由於物件具有唯一名稱,因此模組內不會出現此問題。

外部模組指南:

  • 匯出為接近頂層盡可能。
  • 對單一導出使用導出預設值。
  • 將多個導出放在頂部。
  • 僅將模組/命名空間用於大型匯出。

危險訊號:

  • 頂層匯出module Foo { ... }.
  • 未匯出的單一匯出類別/函數預設值。
  • 具有相同導出模組 Foo { ... } 的多個檔案。

以上是如何透過 TypeScript 外部模組有效使用命名空間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板