在TypeScript中有一種方法允許一個文件訪問另一個文件中的方法,但不能使它們全局可訪問嗎?Typescript包裝範圍的等價物?
這個用例有一個很大的類,有一些私有方法是危險的,不應公開公開地暴露在代碼庫的任何地方。我希望能夠編寫在另一個文件中訪問它們的方法,以便在邏輯上對它們進行分組,而不必將它們都放在一個巨大的類中。
理想情況下,像Java的包範圍這樣的東西會讓我聲明這兩個文件可以訪問彼此的危險方法,而不是其他任何人。是否有任何TypeScript語言功能允許這樣做?
實施例:
類A有方法d1
通過d100
是所有危險,並且不應當是全局訪問。
B類方法有s1
到s100
,這些方法對於項目中的公共消費是安全的。在做一些安全檢查之後,每個s
方法都會調用d
方法。 B類需要訪問所有d
方法。
C類想調用s
方法中的任何一種,並且應該能夠但不應該能夠調用任何d
方法。
但是,據我瞭解Typescript,如果我導出任何d
方法,以便B可以調用它們,那麼它們也可以被C訪問。如果這是Java,我會將A和B放在同一個包中,並使d
方法包範圍。
在TypeScript中似乎沒有任何與此類似的東西,但是有沒有什麼能夠模擬1)能夠打破功能來分離文件,但2)限制誰可以調用方法的目標?
(是的,我知道一旦它編譯成Java腳本全盤皆輸。我們的目標是隻使用打字稿作爲靜態檢查在編譯時間來驗證合同。)
爲什麼不把'A'類放在與'B'類相同的文件中,並且不要導出A? – Rob
@Rob現在就是這樣。這兩個類都變得越來越大,最簡單的重構將它們分成兩個文件。 – Hober
醜陋的部分解決方法,使用'/ ** @internal ** /'來隱藏'.d.ts'文件中的內容。似乎還沒有任何好的方法來做到這一點,雖然有[開放提議](https://github.com/Microsoft/TypeScript/issues/5228) – Gerrit0