2017-02-09 74 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