首页 > 解决方案 > 为什么我可以将空值 `[]` 用于类型化数组接口,而不能将空值 `{}` 用于类型化对象接口?

问题描述

我注意到我可以将下面的朋友初始化为一个空数组[],但我不能对带有空对象的会话做同样的事情{}。为什么会这样,有什么方法可以使用空对象而不使界面中的所有键都是可选的?

const initialState: {
  friends: Array<{
    name: string;
    age: number;
  }>;
  session: {
    login: string;
    avatar: string;
  }
} = {
  friends: [], // all good
  session: {}  // throws error!
};

标签: typescript

解决方案


因为[]仍然是一个有效的数组(长度为零)Array<{name:string;age:number;}>

{}不是表单的有效对象{login: string; avatar: string}


推荐阅读