Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class typescript中私有静态函数和公共静态函数的区别是什么?_Class_Angular_Typescript_Static - Fatal编程技术网

Class typescript中私有静态函数和公共静态函数的区别是什么?

Class typescript中私有静态函数和公共静态函数的区别是什么?,class,angular,typescript,static,Class,Angular,Typescript,Static,在angular2服务的上下文中;typescript中私有静态函数和公共静态函数的区别是什么 public static getUserStockList(): Stock[] { /* TODO: implement http call */ return WATCHLIST; } vs 编辑: 什么时候可以在私有函数上使用私有静态函数?可以从类的实例调用私有静态方法。 例如: interface Data { // ... } interface Str

在angular2服务的上下文中;typescript中私有静态函数和公共静态函数的区别是什么

  public static getUserStockList(): Stock[] {
    /* TODO: implement http call */
    return WATCHLIST;
  }
vs

编辑:


什么时候可以在私有函数上使用私有静态函数?

可以从类的实例调用私有静态方法。
例如:

interface Data {
    // ...
}

interface StrictData {
    // ...

abstract class MyClass {
    protected constructor(data: StrictData) {
        // ...
    }
}

class AnotherClass extends MyClass {
    private static normalizeData(data?: Data | StrictData): StrictData {
        // ...
    }

    constructor(data?: Data | StrictData) {
        super(AnotherClass.normalizeData(data));
    }
}
AnotherClass.normalizeData可以从实例中访问,编译器对此没有问题。
然而,这:

console.log(AnotherClass.normalizeData({}));
将导致:

属性“normalizeData”是私有的,只能在类中访问 “另一类”


可以从类的实例调用私有静态方法。
例如:

interface Data {
    // ...
}

interface StrictData {
    // ...

abstract class MyClass {
    protected constructor(data: StrictData) {
        // ...
    }
}

class AnotherClass extends MyClass {
    private static normalizeData(data?: Data | StrictData): StrictData {
        // ...
    }

    constructor(data?: Data | StrictData) {
        super(AnotherClass.normalizeData(data));
    }
}
AnotherClass.normalizeData可以从实例中访问,编译器对此没有问题。
然而,这:

console.log(AnotherClass.normalizeData({}));
将导致:

属性“normalizeData”是私有的,只能在类中访问 “另一类”


您好,我认为区别在于函数的范围。因此,在您的类之外,公共也是可见的(例如,如果您在服务中这样做的话)。。二等兵没有。。仅在类中可见与任何其他OO语言相同,
private
仅对类本身的实例可见,
protected
仅对类和扩展类的实例可见,并且
public
对用户可见all@NitzanTomer静态方法是类上的成员,因此类的任何实例都不能调用它们。那么,公共静态方法和私有静态方法之间有什么区别呢?这是否意味着其他类可以调用这些静态类方法,而私有静态类只能在定义的类中调用?嗨,我认为区别在于函数的范围。因此,公共类在类之外也是可见的(例如,如果您在服务中这样做的话)。。二等兵没有。。仅在类中可见与任何其他OO语言相同,
private
仅对类本身的实例可见,
protected
仅对类和扩展类的实例可见,并且
public
对用户可见all@NitzanTomer静态方法是类上的成员,因此类的任何实例都不能调用它们。那么,公共静态方法和私有静态方法之间有什么区别呢?这是否意味着其他类可以调用这些静态类方法,而私有静态类只能在定义的类中调用?