我正在考虑但找不到任何理由在 TypeScript 类中使用静态方法(尤其是 private static)。我错过了什么吗? 我问这个问题是因为我看到了这样的代码:
class Abc {
public someMethod() {
Abc.myMethod();
}
private static myMethod() {
...
}
}
P.S. 对于那些试图向我解释静态和非静态方法的区别以及什么是私有(private)方法的人。由于我多年的 C# 背景,我非常了解这些。如果您仔细阅读问题 - 这是关于在 TypeScript 中使用它们。
最佳答案
静态方法/属性与非静态方法/属性的主要区别在于:在内存级别,将为静态字段创建一部分内存,该内存将在类中的所有对象之间共享。所以它适用于 C# 或 Java。
对于 javascript,此行为已在 ES6+ 中实现.但对于早期版本的 Ecma 脚本,typescript 会模拟这种情况。
在您的情况下,方法 myMethod()
可用作隐藏复杂资源密集型功能的方法,这些功能未绑定(bind)到类的特定实例,并且对最终用户隐藏。
查看这段代码:
class A {
protected _p: string;
constructor() {
this._p = "A";
}
public someMethod(value: string) {
A.myMethod(this._p + value);
}
private static myMethod(p:string) {
console.log(p);
}
}
class B extends A {
constructor() {
super();
this._p = "B";
}
}
var a1 = new A();
a1.someMethod("_1");
var a2 = new A();
a2.someMethod("_2");
var b1 = new B();
b1.someMethod("_1");
关于typescript - 有什么理由在 TypeScript 中使用静态/私有(private)静态方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52481219/