更新到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)
这个问题已经有了正确的答案,但要澄清并充分解释:
解决方案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
| 归档时间: |
|
| 查看次数: |
31665 次 |
| 最近记录: |