如何在复杂接口中初始化接口属性



我想初始化函数中的属性。我有以下错误。我的代码出了什么问题?

类型"{ErrorMessage:string;Label:string;Name:string;Text:string;}"不可分配给类型"IUserProps"。对象文字只能指定已知属性,并且类型"IUserProps"中不存在"ErrorMessage"。

export interface IField {
Label: string,
Name: string,
ErrorMessage: string,
Text: string
}
export interface IUserProps {
FirstName: IField,
Email:IField   
}
interface IUserState {
user:{
Email:IUserProps,
FirstName: IUserProps 
}  
}
const setDefaultUserState :() =>IUserState= () =>({
Email: {
ErrorMessage: '',
Label:'Email',
Name:'Email',            
Text: ''
},       
FirstName: {
ErrorMessage: '',
Label:'Email',
Name:'Email',            
Text: ''
},       
})
  • 根据您的类型,IUserState具有具有这些属性的属性user。你忽略了这一点
  • 此外,IUserPropsIUserState是相同的,但您嵌套它们,这在逻辑上没有意义。我删除了IUserProps

StackBlitz

export interface IField {
Label: string,
Name: string,
ErrorMessage: string,
Text: string
}

export interface IUserState {
user:{
Email:IField,
FirstName: IField 
}  
}

export var setDefaultUserState:() => IUserState = () => ({
user: {
Email: {
ErrorMessage: '',
Label:'Email',
Name:'Email',            
Text: ''
},       
FirstName: {
ErrorMessage: '',
Label:'Email',
Name:'Email',            
Text: ''
},
}}
)

最新更新