【问题标题】:Is there a disadvantage in using a global function instead of a private static method in Typescript在 Typescript 中使用全局函数而不是私有静态方法是否有缺点
【发布时间】:2020-02-25 10:13:25
【问题描述】:

不得不写this.myMethod()ClassName.myMethod() 而不仅仅是myMethod(),我往往很恼火。
尤其是当方法是无状态的实用函数时,不需要直接访问字段。

这里是一个例子:

function method1() { }

class App {
    main() {
        method1(); // I want to use this
        App.method2();
    }

    private static method2() { 
        // stateless and don't need access to fields
    }
}

我想知道是否有任何理由不使用全局函数而不是私有静态方法(反之亦然)。

【问题讨论】:

  • 你的意思是window.method() 而不是this.method()App.method()
  • 不,只是method(),就像我提供的示例中一样
  • 是一样的;)。我会在回答中更多地描述它

标签: typescript class methods static


【解决方案1】:

不使用全局方法的原因有很多。

首先是打字。方法类型已经连接到类/实例。要键入全局函数,您还必须覆盖 global 模块。

其次是名称冲突。您可以轻松地用另一种全局方法覆盖一个全局方法。 I case of class's methods:您可以命名类中的每个私有方法method,并且不会被覆盖。

第三是你不能在全局函数中使用this作为类实例。

第四是速度(但我不知道多少)私有方法在基本范围内,全局方法在最后一个。所以 V8 在运行时会检查 this 和 global 之间的每个范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 2011-10-23
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多