<p dir="auto">For example if we have a class</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content=" class Product
{
  private _prodNumber: any;
  private _name: string;

   constructor() {}

   get prodNumber() { return this._prodNumber; }
   get name() { return this._name; }
}

var prod = new Product();"><pre class="notranslate"> <span class="pl-k">class</span> <span class="pl-smi">Product</span>
<span class="pl-kos">{</span>
  <span class="pl-k">private</span> <span class="pl-c1">_prodNumber</span>: <span class="pl-smi">any</span><span class="pl-kos">;</span>
  <span class="pl-k">private</span> <span class="pl-c1">_name</span>: <span class="pl-smi">string</span><span class="pl-kos">;</span>

   <span class="pl-en">constructor</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>

   <span class="pl-k">get</span> <span class="pl-en">prodNumber</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">_prodNumber</span><span class="pl-kos">;</span> <span class="pl-kos">}</span>
   <span class="pl-k">get</span> <span class="pl-en">name</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">_name</span><span class="pl-kos">;</span> <span class="pl-kos">}</span>
<span class="pl-kos">}</span>

<span class="pl-k">var</span> <span class="pl-s1">prod</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-smi">Product</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<p dir="auto">if we start typing _p using the prod variable<br>
intellisence shows _productNumber member in the properties although it is a private member.</p>
<p dir="auto">If we have a class with a lot of members those private properties intermix with public properties and it is difficult to find a needed property in the long list of properties.</p>
<p dir="auto">Expected: private properties are hidden from intelisense and protected properties are shown only in intellisense of derived classes and not when we use a class instance.</p>
<p dir="auto">I don't know if this is by design but outside of the class I am able to see private static members, which I don't believe I should be able to, for example:</p>
<p dir="auto">I have a class named "NotifyChanged" (in the "Aspect" module/namespace) and it inherits from "Base" (also in the "Aspect" module/namespace).  Base has a private static method named "createGet" which is only used within the Base class.  In a completely different class in a completely different module/namespace I am able to type "Aspect.NotifyChanged.cre" and the intellisense pops up with createGet.  If I continue, the IDE then underlines the whole line saying that createGet is a private method and is not accessible - but it still displays it as an method to call in intellisense?</p>
<p dir="auto">Please also see attached screenshots.<br>
<a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/2872785/5142885/4ca28f26-7181-11e4-991f-605c667b3969.png"><img src="https://cloud.githubusercontent.com/assets/2872785/5142885/4ca28f26-7181-11e4-991f-605c667b3969.png" alt="tsissue_1" style="max-width: 100%;"></a><br>
<a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/2872785/5142893/8a8772e8-7181-11e4-8a03-7ce7a17cfb75.png"><img src="https://cloud.githubusercontent.com/assets/2872785/5142893/8a8772e8-7181-11e4-8a03-7ce7a17cfb75.png" alt="image" style="max-width: 100%;"></a></p>