Object literal的属性隐式具有'any []'类型 - Angular 2

Dhe*_*wal 5 angular

我最近将角度2升级到稳定版本并突然在webpack观察器中开始出现此错误.Object literal's property 'avatars' implicitly has an 'any[]' type.这是给出该错误的行:private selectedContact = {'jcf': {'avatars': [], 'fullname': ''}, meta: []};它给出了相同的错误meta.

Pie*_*Duc 15

随着新的打字稿更新出现新的规则和标志.其中一个标志是noImplicitAny旗帜.这可以确保您不会像这样初始化变量:

let avatars = [];
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令将您更改tsconfig.json为不再将此标记为错误:

{
    noImplicitAny: false
}
Run Code Online (Sandbox Code Playgroud)

或者你可以创建一个代表你的接口/类 selectedContact

export interface Contact {
    jcf: ContactDetail;
    meta: any[];
}
Run Code Online (Sandbox Code Playgroud)

另一个界面:

export interface ContactDetail {
    avatars: any[];
    fullname: string;
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以为selectedContact属性分配Contact接口:

private selectedContact: Contact = {...};
Run Code Online (Sandbox Code Playgroud)

或者,这不是很好,您可以明确地将其分配给any[]:

let avatars: any[] = [];
Run Code Online (Sandbox Code Playgroud)