【问题标题】:Typescript TS7017: implicitly any for a Pipe in Angular 2Typescript TS7017:Angular 2 中管道的隐含任何
【发布时间】:2016-05-31 23:40:06
【问题描述】:

我刚开始使用 Angular 2,但在正确使用 typescript 时仍然遇到一些问题。我制作了以下自定义管道来帮助我迭代对象:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({ name: 'mapToIterable' })
export class MapToIterablePipe implements PipeTransform {
    transform(dict: Object): any {
        var a:any = [];
        for (var key in dict) {
            if (dict.hasOwnProperty(key)) {
      --->      a.push({ key: key, value: dict[key] });
            }
        }
        return a;
    }
}

当我编译它时,我得到一个“错误 TS7017:对象类型的索引签名隐式地具有'任何'类型。我真的不明白如何编写我的函数以使这个错误消失。

【问题讨论】:

    标签: typescript angular typescript1.8


    【解决方案1】:

    问题出在这一行:

    var a:any = [];
    

    您将a 定义为any 类型,但使用它时就像定义为数组a.push(...) 一样。您可以使用以下任一选项来修复它:

    // explicitly define a as an array of any's
    var a: any[] = [];
    // allow TypeScript to infer the type as an array
    var a = [];
    

    【讨论】:

    • 嗯,没有成功。错误消息还提到了第 9 行,我在其中放置了一个箭头。您的解决方案不断给我:错误 TS7017:对象类型的索引签名隐含地具有“任何”类型。
    • 在操场上似乎工作正常,也许你在本地有另一个问题(也许你的 tsconfig.json)?
    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 2020-05-29
    • 2017-10-13
    • 1970-01-01
    • 2017-07-22
    • 2022-01-23
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多