Binding element 'index' implicitly has an 'any' type

AngularTypescriptMaterial DesignAngular2 Mdl

Angular Problem Overview


Using the demo project of angular2-mdl as a guide I ported the tab component and tried to implement it as follow:

import { Component } from '@angular/core';

@Component({
    selector: 'my-dashboard',
    templateUrl: './landing.my.html'
})
export class MyDashboard {
    public activeIndex = 0;

    public tabChanged({index}): void {
        this.activeIndex = index;
    }

}

and the template is:

<mdl-tabs mdl-ripple mdl-tab-active-index="0" (mdl-tab-active-changed)="tabChanged($event)">
    <mdl-tab-panel mdl-tab-panel-title="home">
        <mdl-tab-panel-title>
            <mdl-icon class="mdl-color-text--primary">home</mdl-icon><span>Home</span>
        </mdl-tab-panel-title>
        <mdl-tab-panel-content>
            <ul>
                <li>Stanis</li>
                <li>Joffrey</li>
            </ul>
        </mdl-tab-panel-content>
    </mdl-tab-panel>
    <mdl-tab-panel mdl-tab-panel-title="something">
        <mdl-tab-panel-title>
            <mdl-icon class="mdl-color-text--primary">group_work</mdl-icon><span>Ontology</span>
        </mdl-tab-panel-title>
        <mdl-tab-panel-content>
            <ul>
                <li>Stanis</li>
                <li>Joffrey</li>
            </ul>
        </mdl-tab-panel-content>
    </mdl-tab-panel>
    <mdl-tab-panel mdl-tab-panel-title="another">
        <mdl-tab-panel-title>
            <mdl-icon class="mdl-color-text--primary">list</mdl-icon><span>Cognitive</span>
        </mdl-tab-panel-title>
        <mdl-tab-panel-content>
            <ul>
                <li>Robert</li>
            </ul>
        </mdl-tab-panel-content>
    </mdl-tab-panel>
    <mdl-tab-panel mdl-tab-panel-title="else">
        <mdl-tab-panel-title>
            <mdl-icon class="mdl-color-text--primary">call_split</mdl-icon><span>Cognition</span>
        </mdl-tab-panel-title>
        <mdl-tab-panel-content>
            <ul>
                <li>Robert</li>
                <li>Renly</li>
            </ul>
        </mdl-tab-panel-content>
    </mdl-tab-panel>
    <mdl-tab-panel mdl-tab-panel-title="last">
        <mdl-tab-panel-title>
            <mdl-icon class="mdl-color-text--primary">backup</mdl-icon><span>Streaming</span>
        </mdl-tab-panel-title>
        <mdl-tab-panel-content>
            <ul>
                <li>Joffrey</li>
                <li>Myrcella</li>
                <li>Tommen</li>
            </ul>
        </mdl-tab-panel-content>
    </mdl-tab-panel>
</mdl-tabs>

I am using webpack, and i get the following error:

ERROR in [default] home/my-app-ui/src/app/landing.my.ts:10:23 
Binding element 'index' implicitly has an 'any' type.

however the app displays the desired functionality, can someone explain how to fix this ?

Angular Solutions


Solution 1 - Angular

for an object, you need to declare the type as

{index} : {index:any}

Solution 2 - Angular

for an object, you need to declare like this way with one prop:

{propA} : {propA:any}

with more than one prop:

{propA, propB} : {propA:any, propB:any}

Solution 3 - Angular

use any or specific type of the variable like ( numbers,string,etc )

public tabChanged(index:any): void {
    this.activeIndex = index;
}

Solution 4 - Angular

It is a check of the type script compiler. You can either remove the check or specify explicitly the any type in the declaration (answer from @Thyagu). In the tsconfig.json file, you could change the line

"noImplicitAny": false,

to

"noImplicitAny": true,

Solution 5 - Angular

"suppressImplicitAnyIndexErrors": true //tsconfig.json 

You can set a variable's type to any even when the noImplicitAny flag is true.

Solution 6 - Angular

Add suppressImplicitAnyIndexErrors within compilerOptions in tsconfig.json file. Example:

"compilerOptions": {
   "suppressImplicitAnyIndexErrors": true
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionInsaneBotView Question on Stackoverflow
Solution 1 - AngularengineerView Answer on Stackoverflow
Solution 2 - AngularDemonFilipView Answer on Stackoverflow
Solution 3 - AngularThyagarajan CView Answer on Stackoverflow
Solution 4 - AngularNicolas HenneauxView Answer on Stackoverflow
Solution 5 - Angularsweetnandha cseView Answer on Stackoverflow
Solution 6 - AngularAakash GoplaniView Answer on Stackoverflow