繁体   English   中英

每次将接口分配给 Object - Typescript 后都会出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM