typescript 绑定元素“index”隐式具有“any”类型

2exbekwf  于 2023-02-13  发布在  TypeScript
关注(0)|答案(6)|浏览(352)

demo project of 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;
    }

}

模板为:

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

我正在使用Webpack,但收到以下错误:

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

然而,应用程序显示所需的功能,有人能解释如何解决这个问题吗?

von4xj4u

von4xj4u1#

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

{index} : {index:any}

对于具有更多 prop 的对象:

{a,b} : {a:any, b:any}
aoyhnmkz

aoyhnmkz2#

对于一个对象,你需要用一个属性像这样声明:

{propA} : {propA:any}

有一个以上支柱的:

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

bksxznpy3#

这是一个类型脚本编译器的检查。你可以删除这个检查或者在声明中显式指定任何类型(答案来自@Thyagu)。在tsconfig.json文件中,你可以更改行

"noImplicitAny": false,

"noImplicitAny": true,
pbwdgjma

pbwdgjma4#

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

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

yx2lnoni5#

"suppressImplicitAnyIndexErrors": true //tsconfig.json

即使noImplicitAny标志为true,也可以将变量的类型设置为any。

0s0u357o

0s0u357o6#

tsconfig.json 文件的compilerOptions中添加suppressImplicitAnyIndexErrors。示例:

"compilerOptions": {
   "suppressImplicitAnyIndexErrors": true
}

相关问题