<p dir="auto">Currently the file is only used to detect the virtual project. Now that we have tsconfig.json support we can use the language service bound to a tsconfig.json file to find navto items. I would propose the following handling in case of the absense of a file:</p>
<ul dir="auto">
<li>no tsconfig project. Command return no content message</li>
<li>all projects are tsconfig project: return the nav to items (filter duplicates)</li>
<li>there is a mix: the response contains a flag indicating that the result might be incomplete.</li>
</ul>
<p dir="auto">Example:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="function f(T:{new (...args:any[]):any}) {
    return class extends T {}
}"><pre class="notranslate"><span class="pl-k">function</span> <span class="pl-en">f</span><span class="pl-kos">(</span><span class="pl-smi">T</span>:<span class="pl-kos">{</span><span class="pl-k">new</span> <span class="pl-kos">(</span>...<span class="pl-s1">args</span>:<span class="pl-smi">any</span><span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">)</span>:<span class="pl-smi">any</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-k">class</span> <span class="pl-k">extends</span> <span class="pl-smi">T</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Error:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="src/test.ts(2,23): error TS2509: Base constructor return type 'any' is not a class or interface type."><pre class="notranslate"><code class="notranslate">src/test.ts(2,23): error TS2509: Base constructor return type 'any' is not a class or interface type.
</code></pre></div>
<p dir="auto">Seemingly arbitrary fix:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="interface I {}
function f(T:{new (...args:any[]):I}) {
    return class extends T {}
}"><pre class="notranslate"><span class="pl-k">interface</span> <span class="pl-smi">I</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>
<span class="pl-k">function</span> <span class="pl-en">f</span><span class="pl-kos">(</span><span class="pl-smi">T</span>:<span class="pl-kos">{</span><span class="pl-k">new</span> <span class="pl-kos">(</span>...<span class="pl-s1">args</span>:<span class="pl-smi">any</span><span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">)</span>:<span class="pl-smi">I</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-k">class</span> <span class="pl-k">extends</span> <span class="pl-smi">T</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Afaik <code class="notranslate">any</code> should be an acceptable type here?</p>