<p dir="auto"><strong>TypeScript Version:</strong></p>
<p dir="auto">1.8.30.0</p>
<p dir="auto"><strong>Issue</strong><br>
We have a solution with a number of web projects. We recently made a new project which used a tsconfig.json file.</p>
<p dir="auto">This affected other projects to believe they had a tsconfig.json file, overriding our project typescript settings for those projects.</p>
<p dir="auto">"One or more tsconfig.json files detected. Project properties are disabled."</p>
<p dir="auto">I've checked and the project file itself does not contain any reference to any tsconfig.json files nor does the project folder contain a tsconfig file.</p>
<p dir="auto"><strong>Reproduce</strong></p>
<ol dir="auto">
<li>Create two new Web Api projects in same solution.</li>
<li>Add a typescript file to each project and accept that they are converted into a typescript project.</li>
<li>Add a tsconfig.json to the second project.</li>
<li>Open properties for the first project and go to the TypeScript Build Tab. Observe "One or more tsconfig.json files detected. Project properties are disabled."</li>
</ol>
<p dir="auto"><strong>Code</strong></p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="
// None
"><pre class="notranslate"><span class="pl-c">// None</span></pre></div>
<p dir="auto"><strong>Expected behavior:</strong></p>
<p dir="auto">tsconfig.json detection to only work within project folder or files defined in the project file.</p>
<p dir="auto"><strong>Actual behavior:</strong></p>
<p dir="auto">tsconfig,json detection aparently appears on a solution level or at least a project will detect tsconfig files that are in other projects folders.</p>
<p dir="auto">Allow a declarative way of adding members to an existing type's prototype</p>
<p dir="auto">Example:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="
class Shape {
 // ...
}

/* ...elsewhere...*/
extension class Shape { // Syntax??
    getArea() { return /* ... */; }
}

var x = new Shape();
console.log(x.getArea()); // OK"><pre class="notranslate"><span class="pl-k">class</span> <span class="pl-smi">Shape</span> <span class="pl-kos">{</span>
 <span class="pl-c">// ...</span>
<span class="pl-kos">}</span>

<span class="pl-c">/* ...elsewhere...*/</span>
<span class="pl-s1">extension</span><span class="pl-kos"></span> <span class="pl-k">class</span> <span class="pl-smi">Shape</span> <span class="pl-kos">{</span> <span class="pl-c">// Syntax??</span>
    <span class="pl-en">getArea</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-c">/* ... */</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">x</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-smi">Shape</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s1">x</span><span class="pl-kos">.</span><span class="pl-en">getArea</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// OK</span></pre></div>