我想初始化函数中的属性。我有以下错误。我的代码出了什么问题?
类型"{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
。你忽略了这一点 - 此外,
IUserProps
和IUserState
是相同的,但您嵌套它们,这在逻辑上没有意义。我删除了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: ''
},
}}
)