从其他类访问静态方法是否标准?



我是TypeScript和面向对象编程的新手,我有一些函数应该互相等待(JavaScript中的promise),并且promise是相互依赖的,例如:

在主脚本文件中,我有主类,我导入了其他文件并在其中分类。(我的意思是使用import {bla-bla-class} from "bla-bla")

我有一个promiseload(取决于页面和互联网速度可能需要几毫秒或几秒钟......使用addEventListener并且该方法awaitedconfigSetter该方法(load)来设置配置(我需要完全加载页面以设置配置),然后我需要告诉main类中的ready()方法页面已加载并且配置设置正确, 正因为如此,我在main类中为ready()方法添加了另一个promise来等待configSetter()方法(因为配置器本身需要等待load方法,ready()也依赖于它,所以我需要等待),当我编译和捆绑文件时,文件比我预期的要重, 而且我的 TypeScript 文件更难理解,因为我使用的不同promises

我想也许我可以导出main类并使其ready()方法static,这样我就可以轻松地从另一个类访问主类的ready()方法,但现在我不确定,这是否是人们在面向对象编程中做的事情?

是否可以在其他类和方法中使用主类的方法(即使是静态的)?(特别是当它们不是主类并且只是一些有用的方法时......他们应该能够调用main类方法吗?

static函数的主要用途是提供不在特定实例上运行的实用程序函数(例如Math类)。您不需要Math实例来执行数学函数,因为这既是不必要的内存使用,而且有些不合逻辑)。

static的另一个用途是在同一类的多个实例之间共享公共资源。我将引用 Angular>= 2.x 开发中的示例:

假设您有一个用于登录和注销用户的服务。尝试将用户配置文件保留为非静态字段将导致用户配置文件在某些用例中出现意外的undefined值,尽管已登录。这是因为用户配置文件未在实例之间共享。将其设为static可确保该字段对于类的每个实例都是相同的。

一般来说,OOP 都是如此。

希望对您有所帮助! :)

最新更新