错误TS7008:成员'summary'隐式具有'any'类型

The*_*eal 28 angular

更新到Angular 2 RC后,我收到以下错误:

error TS7008: Member 'summary' implicitly has an 'any' type.
Run Code Online (Sandbox Code Playgroud)

在这一行:

@Input() summary;
Run Code Online (Sandbox Code Playgroud)

怎么了?

编辑:好的,似乎我在任何公共变量上都出现此错误.

Thi*_*ier 66

也许您noImplicitAny在TypeScript编译器配置中更改了属性的值...请参阅tsconfig.json文件:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false // <-----
  },
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ]
}
Run Code Online (Sandbox Code Playgroud)

您可以尝试在您的媒体资源上添加类型.就像是:

@Input() summary:string;
Run Code Online (Sandbox Code Playgroud)

  • 看起来现在在Github上的Angular2快速入门包中将"noImplicitAny"设置为true.这打破了一些教程...... (4认同)

小智 6

注释掉此"noImplicitAny": falsetsconfig,它会工作


Chr*_*row 6

这个问题已经有了正确的答案,但要澄清并充分解释:

解决方案1 - 在tsconfig.json中设置:

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

解决方案2定义变量的类型,如下所示:

    @Input() summary:string;
Run Code Online (Sandbox Code Playgroud)

说明:

如果要将纯JavaScript转换为TypeScript,则不会为变量(或参数)分配任何类型 - 因为严格类型是TypeScript的名称.

在这种情况下,当你有类似这个变量(没有分配类型)的东西时:

@Input() summary;
Run Code Online (Sandbox Code Playgroud)

然后TypeScript将隐式假设您的变量的类型为"Any"(即它假定变量可以包含任何类型的值).此外,如果您在tsconfig.json中设置了以下内容:

{
  "compilerOptions": {
    ...
    "noImplicitAny": true,
  }
}
Run Code Online (Sandbox Code Playgroud)

...然后,如果变量或参数隐式具有"Any"类型,则会告诉TypeScript编译器抛出错误.因此,您可以使用第一个解决方案忽略所有"隐式任何"错误,使用第二个解决方案(提供类型),并且不会暗示"任何".

TypeScript编译器选项的参考:

https://www.typescriptlang.org/docs/handbook/compiler-options.html


Shi*_*Das 5

在 Angular 12+ 中"strict": false,,tsconfig.json 对我有用。