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

时间:2018-12-11 12:22:00

标签: typescript

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

  

输入'{ErrorMessage: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: ''
        },       

})

1 个答案:

答案 0 :(得分:0)

  • 根据您的键入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: ''
    },
  }}
)