绑定元素“索引”隐式具有“任意”类型

Ins*_*Bot 5 typescript material-design angular2-mdl angular

使用angular2-mdl演示项目作为指南,我移植了tab组件并尝试如下实现:

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

模板是:

<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>
Run Code Online (Sandbox Code Playgroud)

我正在使用webpack,但出现以下错误:

ERROR in [default] home/my-app-ui/src/app/landing.my.ts:10:23 
Binding element 'index' implicitly has an 'any' type.
Run Code Online (Sandbox Code Playgroud)

但是该应用会显示所需的功能,有人可以解释如何解决此问题吗?

lwp*_*ro2 79

对于对象,您需要将类型声明为

{index} : {index:any}
Run Code Online (Sandbox Code Playgroud)

  • 你救了我的命!对于具有更多 props 的对象:`{a,b} : {a:any, b:any}` (16认同)
  • 使用“any”就像把灰尘放在地毯下。将来它会咬你 (3认同)

Die*_*eeu 39

对于一个对象,你需要用一个 prop 来声明:

{propA} : {propA:any}
Run Code Online (Sandbox Code Playgroud)

具有多个道具:

{propA, propB} : {propA:any, propB:any}
Run Code Online (Sandbox Code Playgroud)


Thy*_*n C 5

使用any或使用特定类型的变量(如(数字,字符串等)

public tabChanged(index:any): void {
    this.activeIndex = index;
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*aux 5

这是对类型脚本编译器的检查。您可以删除检查或在声明中明确指定任何类型(@Thyagu的答案)。在tsconfig.json文件中,您可以更改行

"noImplicitAny": false,
Run Code Online (Sandbox Code Playgroud)

"noImplicitAny": true,
Run Code Online (Sandbox Code Playgroud)

  • 或者相反? (8认同)