TypeScript报错:类型{...}无法赋值给类型'User[]'求助
解决Type '{...}' is not assignable to type 'User[]'错误
嘿,刚上手Angular 4和TypeScript踩点小坑太正常了,咱们来一步步搞定你的问题~
问题根源
你遇到的错误本质是类型不匹配:
- 你把
me声明成了User[](User类型的数组),但在ngOnInit里给它赋值的是单个User对象,TypeScript的严格类型检查自然会报错。 - 另外你的
User接口还不完整,没法正确描述你赋值的对象结构,这也会引发后续的类型校验问题。
具体解决方案
1. 修正变量类型(核心)
如果me只需要存储单个用户信息,直接把数组类型改成单个User类型:
me: User; // 把User[]改成User
要是你确实需要存储多个用户(数组场景),那赋值时要把对象放到数组里:
this.me = [{ name: 'Jochen', age: 31, email: 'mail@web.de', address: { street: 'Berlinerstraße 24', city: 'Berlin', state: 'Berlin' } }];
2. 补全User接口
你的User接口需要包含所有你用到的属性,尤其是嵌套的address属性:
interface User { name: string; age: number; email: string; address: Address; // 关联已定义的Address接口 }
修正后的完整代码
import { OnInit } from '@angular/core'; interface Address { city: string; street: string; state: string; } interface User { name: string; age: number; email: string; address: Address; } export class UserComponent implements OnInit { me: User; // 修正为单个User类型 ngOnInit() { this.me = { name: 'Jochen', age: 31, email: 'mail@web.de', address: { street: 'Berlinerstraße 24', city: 'Berlin', state: 'Berlin' } }; } }
这样修改后,类型检查就能通过啦,以后写TypeScript时多留意变量的类型声明和赋值内容的匹配性就好~
内容的提问来源于stack exchange,提问作者b00r00x0
相关产品推荐
相关产品推荐

