<p dir="auto"><strong>TypeScript Version:</strong></p>
<p dir="auto">1.8.10</p>
<p dir="auto"><strong>Visual studio Version:</strong></p>
<p dir="auto">2015 community version update 2<br>
typescript tools for visual studio 1.8.29.0</p>
<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="any typescript code
"><pre class="notranslate">any <span class="pl-s1">typescript</span> <span class="pl-s1">code</span></pre></div>
<p dir="auto"><strong>Expected behavior:</strong></p>
<p dir="auto">Visual studio typescript debugger could correctly setup breakpoint red point at the line I double clicked.</p>
<p dir="auto"><strong>Actual behavior:</strong></p>
<p dir="auto">When enable <code class="notranslate">inlineSourceMap: true</code> in tsconfig.json, when setting a breakpoint in VS editor, it can map that source line number from .ts file to the corresponding line number in the .js file, however, the breakpoint red point in the VS editor is shown on the line number in the .js file, rather than the line number on the .ts file. Therefore, if I double click on line 100 in one .ts file, the breakpoint red point would be shown on maybe line 90 of that .ts file, corresponding to what the mapped line number is in the corresponding .js file.</p>
<p dir="auto">If I disable <code class="notranslate">inlineSourceMap: true</code>, and enable <code class="notranslate">sourceMap: true</code> in tsconfig.json, everything would be just fine.</p>
<p dir="auto">I've noticed that there is a previous issue similar to this: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="101845971" data-permission-text="Title is private" data-url="https://github.com/microsoft/TypeScript/issues/4360" data-hovercard-type="issue" data-hovercard-url="/microsoft/TypeScript/issues/4360/hovercard" href="https://github.com/microsoft/TypeScript/issues/4360">#4360</a>, and that issue is closed. Is my configuration wrong or missing something? Thanks.</p>
<p dir="auto">My tsconfig.json:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;compileOnSave&quot;: true,
  &quot;compilerOptions&quot;: {
    &quot;module&quot;: &quot;commonjs&quot;,
    &quot;target&quot;: &quot;ES5&quot;,

    &quot;noImplicitAny&quot;: true,
    &quot;suppressImplicitAnyIndexErrors&quot;: true,
    &quot;removeComments&quot;: false,
    &quot;preserveConstEnums&quot;: true,
    &quot;forceConsistentCasingInFileNames&quot;: true,
    &quot;noEmitOnError&quot;: true,

    // &quot;sourceMap&quot;: true,
    &quot;inlineSourceMap&quot;: true,

    &quot;inlineSources&quot;: true
  }
}"><pre class="notranslate"><code class="notranslate">{
  "compileOnSave": true,
  "compilerOptions": {
    "module": "commonjs",
    "target": "ES5",

    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "removeComments": false,
    "preserveConstEnums": true,
    "forceConsistentCasingInFileNames": true,
    "noEmitOnError": true,

    // "sourceMap": true,
    "inlineSourceMap": true,

    "inlineSources": true
  }
}
</code></pre></div>
<p dir="auto"><strong>TypeScript Version:</strong></p>
<p dir="auto">1.8.7</p>
<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="private streamProcess(stream: NodeJS.ReadableStream): Promise&lt;void&gt; {
    return new Promise&lt;void&gt;((ok, fail) =&gt; {
        stream
            .pipe(this.parser.createStream()) // returning type is `NodeJS.ReadWriteStream`
            .on(&quot;error&quot;, fail)
            .pipe(this.transformer.createStream()) // returning type is `NodeJS.ReadWriteStream` and error appears in the line
            // error TS2339: Property 'pipe' does not exist on type 'EventEmitter'.
            .on(&quot;error&quot;, fail)
            .pipe(this.persister.createStream()) // returning type is `NodeJS.WritableStream`
            .on(&quot;error&quot;, fail)
            .once(&quot;finish&quot;, () =&gt; {
            });
    });
}"><pre class="notranslate"><span class="pl-k">private</span> <span class="pl-en">streamProcess</span><span class="pl-kos">(</span><span class="pl-s1">stream</span>: <span class="pl-smi">NodeJS</span><span class="pl-kos">.</span><span class="pl-c1">ReadableStream</span><span class="pl-kos">)</span>: <span class="pl-smi">Promise</span><span class="pl-kos">&lt;</span><span class="pl-smi"><span class="pl-k">void</span></span><span class="pl-kos">&gt;</span> <span class="pl-kos">{</span>
    <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-smi">Promise</span><span class="pl-kos">&lt;</span><span class="pl-smi"><span class="pl-k">void</span></span><span class="pl-kos">&gt;</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">ok</span><span class="pl-kos">,</span> <span class="pl-s1">fail</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
        <span class="pl-s1">stream</span>
            <span class="pl-kos">.</span><span class="pl-en">pipe</span><span class="pl-kos">(</span><span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">parser</span><span class="pl-kos">.</span><span class="pl-en">createStream</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-c">// returning type is `NodeJS.ReadWriteStream`</span>
            <span class="pl-kos">.</span><span class="pl-en">on</span><span class="pl-kos">(</span><span class="pl-s">"error"</span><span class="pl-kos">,</span> <span class="pl-s1">fail</span><span class="pl-kos">)</span>
            <span class="pl-kos">.</span><span class="pl-en">pipe</span><span class="pl-kos">(</span><span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">transformer</span><span class="pl-kos">.</span><span class="pl-en">createStream</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-c">// returning type is `NodeJS.ReadWriteStream` and error appears in the line</span>
            <span class="pl-c">// error TS2339: Property 'pipe' does not exist on type 'EventEmitter'.</span>
            <span class="pl-kos">.</span><span class="pl-en">on</span><span class="pl-kos">(</span><span class="pl-s">"error"</span><span class="pl-kos">,</span> <span class="pl-s1">fail</span><span class="pl-kos">)</span>
            <span class="pl-kos">.</span><span class="pl-en">pipe</span><span class="pl-kos">(</span><span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">persister</span><span class="pl-kos">.</span><span class="pl-en">createStream</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-c">// returning type is `NodeJS.WritableStream`</span>
            <span class="pl-kos">.</span><span class="pl-en">on</span><span class="pl-kos">(</span><span class="pl-s">"error"</span><span class="pl-kos">,</span> <span class="pl-s1">fail</span><span class="pl-kos">)</span>
            <span class="pl-kos">.</span><span class="pl-en">once</span><span class="pl-kos">(</span><span class="pl-s">"finish"</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
            <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto"><strong>Expected behavior:</strong></p>
<p dir="auto"><strong>Actual behavior:</strong><br>
i got error if only set event emitters, what's the wrong of the code?</p>