typescript - 为什么我可以将空值 `[]` 用于类型化数组接口,而不能将空值 `{}` 用于类型化对象接口?
问题描述
我注意到我可以将下面的朋友初始化为一个空数组[]
,但我不能对带有空对象的会话做同样的事情{}
。为什么会这样,有什么方法可以使用空对象而不使界面中的所有键都是可选的?
const initialState: {
friends: Array<{
name: string;
age: number;
}>;
session: {
login: string;
avatar: string;
}
} = {
friends: [], // all good
session: {} // throws error!
};
解决方案
因为[]
仍然是一个有效的数组(长度为零)Array<{name:string;age:number;}>
。
但{}
不是表单的有效对象{login: string; avatar: string}
推荐阅读
- c++ - 恢复 stdio 流打开模式
- sql - 如何将 list('92589492','92589494','92589495') 转换为 PostgresSQL 中的行?转置?
- android - 在 android 中将日期时间字符串转换为 Utc 日期时间少一个小时
- javascript - 如果变量得到删除类
- couchdb - 查找当前文档和以前版本之间的差异
- sql - 根据订单日期从日期列表中选择价格
- python - 为什么在此代码中使用 > 会产生错误?
- angular - Angular - 未捕获的错误:无法分配给引用或变量
- c# - 使用 ZXing 生成 GS1-Databar(以前的 RSS_14)条码
- python - Python 请求 Json 正文包含一些泰语值,需要按原样编码