<p dir="auto"><strong>TypeScript Version:</strong></p>
<p dir="auto">1.8.10</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="interface Foo {
  *generator(): Iterable&lt;number&gt;;
}

class Bar implements Foo {
  *generator(): Iterable&lt;number&gt; {
    yield 1;
    return 2;
  }
}"><pre class="notranslate"><span class="pl-k">interface</span> <span class="pl-smi">Foo</span> <span class="pl-kos">{</span>
  <span class="pl-c1">*</span><span class="pl-c1">generator</span><span class="pl-kos">(</span><span class="pl-kos">)</span>: <span class="pl-smi">Iterable</span><span class="pl-kos">&lt;</span><span class="pl-smi">number</span><span class="pl-kos">&gt;</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-k">class</span> <span class="pl-smi">Bar</span> <span class="pl-k">implements</span> <span class="pl-smi">Foo</span> <span class="pl-kos">{</span>
  <span class="pl-c1">*</span><span class="pl-en">generator</span><span class="pl-kos">(</span><span class="pl-kos">)</span>: <span class="pl-smi">Iterable</span><span class="pl-kos">&lt;</span><span class="pl-smi">number</span><span class="pl-kos">&gt;</span> <span class="pl-kos">{</span>
    <span class="pl-k">yield</span> <span class="pl-c1">1</span><span class="pl-kos">;</span>
    <span class="pl-k">return</span> <span class="pl-c1">2</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Compile with: <code class="notranslate">tsc --noImplicitAny --target ES6 Foo.ts</code></p>
<p dir="auto"><strong>Expected behavior:</strong><br>
Compiles with no warnings :)</p>
<p dir="auto"><strong>Actual behavior:</strong><br>
Foo.ts(2,3): error TS1131: Property or signature expected.<br>
Foo.ts(2,15): error TS1005: ';' expected.<br>
Foo.ts(2,33): error TS1005: '(' expected.<br>
Foo.ts(3,1): error TS1128: Declaration or statement expected.</p>
<p dir="auto"><strong>TypeScript Version:</strong></p>
<p dir="auto">nightly (1.9.0-dev.20160217)</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="var z: { foo?: { bar: string; }; } = {};

z.foo = {bar: ''}

delete z.foo;

z.foo.bar; // Should be an error"><pre class="notranslate"><span class="pl-k">var</span> <span class="pl-s1">z</span>: <span class="pl-kos">{</span> <span class="pl-c1">foo</span>?: <span class="pl-kos">{</span> <span class="pl-c1">bar</span>: <span class="pl-smi">string</span><span class="pl-kos">;</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-kos">}</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">;</span>

<span class="pl-s1">z</span><span class="pl-kos">.</span><span class="pl-c1">foo</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span><span class="pl-c1">bar</span>: <span class="pl-s">''</span><span class="pl-kos">}</span>

<span class="pl-k">delete</span> <span class="pl-s1">z</span><span class="pl-kos">.</span><span class="pl-c1">foo</span><span class="pl-kos">;</span>

<span class="pl-s1">z</span><span class="pl-kos">.</span><span class="pl-c1">foo</span><span class="pl-kos">.</span><span class="pl-c1">bar</span><span class="pl-kos">;</span> <span class="pl-c">// Should be an error</span></pre></div>
<p dir="auto"><strong>Expected behavior:</strong><br>
Under strict-null mode, usages of <code class="notranslate">delete</code> are seen as, at least, assignments of <code class="notranslate">undefined</code>.</p>
<p dir="auto"><strong>Actual behavior:</strong><br>
Compiler doesn't detect <code class="notranslate">delete</code> as object-mutating.</p>