在Angular2/Typescript網站中,代碼包含兩個提供程序ProviderA和ProviderB。無法訪問嵌套屬性內的函數
提供者A試圖調用方法:ProviderB.SomeProperty.SomeSubProperty.SomeMethod()
。發生這種情況時,會拋出一個錯誤,指出「對象不支持屬性或方法'SomeMethod'」。
如果將相同的方法複製到ProviderB.SomeProperty
中,也會發生這種情況。例如,對於:ProviderB.SomeProperty.SomeMethod()
,TypeScript無法識別SomeMethod。
如果該函數被複制到頂級屬性,則該函數調用起作用。 ProviderB.SomeMethod()
執行沒有問題。
爲什麼TypeScript只識別它直接訪問的對象上的函數?
還有一點需要注意的是:所有屬性都可以用於每個ProviderB的子屬性 - 只有函數不能被訪問。
一個後續提示:所有這些代碼在HTTP調用完成後執行。因此代碼的一部分執行HTTP.Get(),並且當應用程序收到響應時,ProviderA將嘗試調用ProviderB的嵌套方法。
您應該在這裏提供一個最小的,完整的,可驗證的例子。 –
函數是本地的 –
@RomanC這就是我在想的除了「如果函數被複制到頂層屬性,函數調用工作」 – Jan