2017-04-25 6 views
0

angular2サービスのコンテキストでは、 typescriptのプライベート静的関数とpublic static関数の違いは何ですか?プライベート静的関数とtypcriptのパブリック静的関数の違いは何ですか?

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

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

EDIT:

プライベート関数を介してプライベート静的機能を使用するのが適切でしょうか?

+0

こんにちは、私は違いがあると思いプライベートクラス内でのみアクセス可能です:

console.log(AnotherClass.normalizeData({})); 

になりますクラスの外でも公開されています(たとえば、サービスでそれを行った場合など)。プライベートな番号は、クラス自体でのみ表示されます。 –

+0

Funcitonと同じ他のオブジェクト指向言語では、 'private'はクラス自体のインスタンスにしか見えず、' protected'はクラスと拡張クラスのインスタンスにしか見えず、 'public'は全てに可視です –

+0

@NitzanTomer静的メソッドはメンバですクラスのどのインスタンスでも呼び出すことはできません。公的な方法と私的な方法の違いは何ですか?それは他のクラスが定義されたクラス内で呼び出すことができるだけの静的クラスメソッドとプライベート静的メソッドを呼び出せることを意味しますか? – Yeysides

答えて

2

プライベート静的メソッドは、クラスのインスタンスから呼び出すことができます。
本の例:

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は、インスタンスからアクセス可能であり、コンパイラはこれでだけで結構です。
しかし、これは:

プロパティ 'normalizeDataは' 'AnotherClass'

関連する問題