![](/img/trans.png)
[英]Typescript: why i getting error, when describe object in interface with [id: string]: any?
[英]Getting error every time after assign interface to Object - Typescript
将接口分配给 typescript 中的任何 object 后出现错误。
我有两个下面的界面。
export interface UserInfo {
firstName: string,
lastName: string,
lastUpdateTime: string,
status: string
}
export interface User{
activeCount: string,
subsource: string,
users: UserInfo[]
}
将上述用户界面分配给 object 后,组件出现错误。
user: User= {}; // Type {} is missing the properties
user: User;
这是因为当您指定像这样firstName: string
类型的属性时,该属性应该存在(它是必需的)请将其定义更改为firstName?: string,
这意味着该属性是可选属性,不能定义!
那么错误就会 go 消失!
export interface UserInfo {
firstName?: string,
lastName?: string,
lastUpdateTime?: string,
status?: string
}
export interface User{
activeCount?: string,
subsource?: string,
users?: UserInfo[]
}
将上述用户界面分配给 object 后,组件出现错误。
user: User= {}; // Type {} is missing the properties - wont come now!
user: User;
当然,你需要在 object 中添加属性:
const user: User = {
users: [],
activeCount: "",
subsource: "",
};
我认为您必须告诉编译器 {} 是一种 User 并且包含与 User 界面相同的属性。 例如:
user:User = {} as User;
您可以使用Partial
实用程序类型将属性设为可选。
const user: Partial<User> = {};
或者通过映射属性手动执行相同的操作。
interface UserInfo {
firstName: string;
lastName: string;
lastUpdateTime: string;
status: string;
}
interface User {
activeCount: string;
subsource: string;
users: UserInfo[];
}
export type MakeOptional<T> = { [K in keyof T]?: T[K] };
const user: MakeOptional<User> = {};
对于您的问题,这将是一个更通用的解决方案。
根据 typescript,您定义用户:用户将用户的值设置为用户以使用您必须定义的接口,如:让用户:用户
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.