gpt4 book ai didi

typescript :静态方法与在类外定义的函数

转载 作者:行者123 更新时间:2023-12-04 14:12:13 25 4
gpt4 key购买 nike

静态类方法与 TypeScript 中在类外部(文件顶部)定义的函数之间的实际区别是什么?
我知道与其他类和文件的可见性存在差异。当可见性不是问题时(函数/方法只在一个类中使用),我们什么时候应该使用静态方法而不是在任何类之外定义的函数。
例子:

export class Foo {

constructor(bar: string) {
Foo.shout(bar);
}

private static shout(content: string) {
console.log(string.toUpperCase());
}
}
VS
export class Foo {

constructor(bar: string) {
shout(bar);
}

}

function shout(content: string) {
console.log(string.toUpperCase());
}

最佳答案

What are the practical differences between a static class method, and a function defined outside a class (at the top of the file) in TypeScript?


没有那么多:
  • 使用静态方法的代码必须能够访问该类;使用独立函数的代码必须改为访问独立函数。
  • 使用静态方法在技术上涉及对类的构造函数的属性查找;使用独立函数不会。在实践中,这将被优化,使其无关紧要。
  • 代码静态方法可以通过 super 访问构造函数的父构造函数。 (JavaScript 相当独特的东西);独立函数中的代码没有(因为没有父构造函数)。
  • 特别是关于您的示例:您的独立 shout函数对于它出现的模块是私有(private)的; Foo 上的静态方法可以从导入 Foo 的其他模块访问.

  • 稍微接近意见土地:
  • 独立函数是独立的,它没有为阅读代码的人提供它是什么或它在哪里定义的太多上下文。静态方法通过类名提供更多上下文。 但是 ,如果您正在使用模块(就像您看起来那样),则 import为独立函数提供一些上下文。

  • ...when should we use static methods rather than functions defined outside any classes.


    这在很大程度上取决于意见和风格,因此与 Stack Overflow 无关。如果您的团队觉得需要使用某些规则集来保持一致性,请同意一套规则并保持一致。

    关于 typescript :静态方法与在类外定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63395200/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com