<p dir="auto"><strong>I'm submitting a ...</strong>  (check one with "x")</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[ ] bug report =&gt; search github for a similar issue or PR before submitting
[x] feature request
[ ] support request =&gt; Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question"><pre class="notranslate"><code class="notranslate">[ ] bug report =&gt; search github for a similar issue or PR before submitting
[x] feature request
[ ] support request =&gt; Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
</code></pre></div>
<p dir="auto"><strong>Current behavior</strong><br>
This is more a stylistic thing, but</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="this.renderer.setElementAttribute(this.el.nativeElement, 'data-some-param', undefined);"><pre class="notranslate"><code class="notranslate">this.renderer.setElementAttribute(this.el.nativeElement, 'data-some-param', undefined);
</code></pre></div>
<p dir="auto">is a legal usage as it deletes data-some-param attribute from element, but this code  shows typescript error when using strictNullChecks because setElementAttribute is described as:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="abstract setElementAttribute(renderElement: any, attributeName: string, attributeValue: string): void;"><pre class="notranslate"><code class="notranslate">abstract setElementAttribute(renderElement: any, attributeName: string, attributeValue: string): void;
</code></pre></div>
<p dir="auto">attributeValue is just <code class="notranslate">string</code> and not <code class="notranslate">string | undefined</code></p>

<p dir="auto"><strong>Expected behavior</strong></p>

<p dir="auto">attributeValue to have type <code class="notranslate">string | undefined</code><br>
<strong>Minimal reproduction of the problem with instructions</strong></p>

<p dir="auto"><strong>What is the motivation / use case for changing the behavior?</strong></p>

<p dir="auto"><strong>Please tell us about your environment:</strong></p>

<ul dir="auto">
<li><strong>Angular version:</strong> 2.2.4</li>
</ul>

<p dir="auto"><a href="https://github.com/angular/angular/blob/master/modules/%40angular/core/src/render/api.ts">https://github.com/angular/angular/blob/master/modules/%40angular/core/src/render/api.ts</a><br>
still the same in latest Angular</p>
<ul dir="auto">
<li><strong>Browser:</strong> [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]</li>
</ul>

<ul dir="auto">
<li>
<p dir="auto"><strong>Language:</strong> [all | TypeScript X.X | ES6/7 | ES5]</p>
</li>
<li>
<p dir="auto"><strong>Node (for AoT issues):</strong> <code class="notranslate">node --version</code> =</p>
</li>
</ul>
<p dir="auto"><strong>I'm submitting a ...</strong>  (check one with "x")</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[X] bug report =&gt; search github for a similar issue or PR before submitting"><pre class="notranslate"><code class="notranslate">[X] bug report =&gt; search github for a similar issue or PR before submitting
</code></pre></div>
<p dir="auto"><strong>Current behavior</strong></p>
<p dir="auto">When trying to compile an ng2 application with typescript 2.0 strictNullChecks turned on the compiler runs into errors.</p>
<p dir="auto"><strong>Expected behavior</strong></p>
<p dir="auto">Expect that ng2 would support use with strictNullChecks.</p>
<p dir="auto"><strong>Reproduction of the problem</strong></p>
<p dir="auto">Reproduced by taking the quick start application and setting the strictNullChecks option true in tsconfig.json.  (see: <a href="https://github.com/abierbaum/quickstart">https://github.com/abierbaum/quickstart</a>)</p>
<p dir="auto">When doing this and running <code class="notranslate">npm run tsc</code> the following error is shown:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt; angular-quickstart@1.0.0 tsc /home/allenb/Source/quickstart
&gt; tsc

node_modules/@angular/core/src/util/decorators.d.ts(11,5): error TS2411: Property 'extends' of type 'Type&lt;any&gt; | undefined' is not assignable to string index type 'Function | any[] | Type&lt;any&gt;'.
node_modules/@angular/platform-browser/src/dom/dom_renderer.d.ts(25,22): error TS2420: Class 'DomRenderer' incorrectly implements interface 'Renderer'.
  Types of property 'animate' are incompatible.
    Type '(element: any, startingStyles: AnimationStyles | undefined, keyframes: (AnimationKeyframe | undef...' is not assignable to type '(element: any, startingStyles: AnimationStyles, keyframes: AnimationKeyframe[], duration: number,...'.
      Type 'AnimationPlayer | undefined' is not assignable to type 'AnimationPlayer'.
        Type 'undefined' is not assignable to type 'AnimationPlayer'."><pre class="notranslate"><code class="notranslate">&gt; angular-quickstart@1.0.0 tsc /home/allenb/Source/quickstart
&gt; tsc

node_modules/@angular/core/src/util/decorators.d.ts(11,5): error TS2411: Property 'extends' of type 'Type&lt;any&gt; | undefined' is not assignable to string index type 'Function | any[] | Type&lt;any&gt;'.
node_modules/@angular/platform-browser/src/dom/dom_renderer.d.ts(25,22): error TS2420: Class 'DomRenderer' incorrectly implements interface 'Renderer'.
  Types of property 'animate' are incompatible.
    Type '(element: any, startingStyles: AnimationStyles | undefined, keyframes: (AnimationKeyframe | undef...' is not assignable to type '(element: any, startingStyles: AnimationStyles, keyframes: AnimationKeyframe[], duration: number,...'.
      Type 'AnimationPlayer | undefined' is not assignable to type 'AnimationPlayer'.
        Type 'undefined' is not assignable to type 'AnimationPlayer'.
</code></pre></div>
<p dir="auto">Other similar errors occur with larger projects.</p>
<p dir="auto"><strong>What is the motivation / use case for changing the behavior?</strong></p>
<p dir="auto">strictNullChecks is a recommended best practices for new typescript code and it would be great if we could use this with ng2 applications.</p>