2017-02-09 76 views
1

我是新來的TypeScript和麪向對象的編程,我有一些功能,應該等待對方(承諾在JavaScript中)和承諾是相互依存的,例如:訪問其他類的靜態方法是否標準?

在主腳本文件中,我有主要的課程,我導入其他文件並歸入其中。 (我的意思是使用import {bla-bla-class} from "bla-bla"

我使用addEventListenerconfigSetter方法有promiseload(取決於網頁和互聯網的速度可能需要幾毫秒或秒......)awaited該方法load設置配置(我需要頁面被完全加載用於設置配置),那麼我需要告訴我的main類的方法,該頁面加載並配置設置正確,因爲我添加了另一個promisemain類中ready()方法等待configSetter()方法(因爲配置二傳手本身需要等待load方法,ready()也依賴於它,所以我需要等待),當我編譯和捆綁文件時,文件是不是我所期待的更重,也是我的打字稿文件是更復雜的理解,因爲型動物promises我用

我想也許我可以導出main類,並使其ready()方法static,這樣我就可以訪問我的主課的0123'方法很容易從另一個類,但現在我不確定,如果是th是人們在面向對象編程中做的事情嗎?

在其他類和方法中使用主類方法(甚至是靜態方法)可以嗎? (特別是當他們不是主要班級,只是一些有用的方法......他們應該能夠調用main類方法嗎?)

+0

長的問題,但一個很好的問題。我也需要知道答案! – M98

+0

[Java:何時使用靜態方法]的可能重複(http://stackoverflow.com/questions/2671496/java-when-to-use-static-methods) – Igor

+1

@Igor但是這是在Java中,這裏是JavaScript 。但我同意主要概念必須相同。謝謝 –

回答

0

static函數的主要用途是提供不工作的實用函數一個特定的實例(例如類似Math的類)。不需要Math的實例來執行數學函數,因爲這既是不必要的內存使用,也是不合邏輯的)。

static的另一個用途是在同一個類的多個實例之間共享一個公共資源。我將舉一個來自Angular> = 2.x開發的例子:

假設您有用於登錄和註銷用戶的服務。嘗試將用戶配置文件保留爲非靜態字段,但在某些使用情況下,即使登錄,也會導致用戶配置文件出現意外的undefined值。這是因爲用戶配置文件不是跨實例共享的。使其成爲static可確保該類的每個實例的字段都是相同的。

對於一般的面向對象,這是正確的。

希望有幫助! :)

+0

感謝您的回答,不,我不使用Angular 2,我剛剛學習TypeScript –

+0

@TypeScriptLearner一般原則仍然適用,共享跨類實例的相同對象:) – K3v1n