typescript - Typescript 使用括号表示法访问对象的可选属性
问题描述
我有一个对象,它的类型是在那里定义的:
interface IObject extends IIndexable {
foo?: string;
foo2?: string;
foo3?: string;
}
我的IIndexable
样子是这样的:
interface IIndexable {
[key: string]: string;
}
我想使用括号符号访问它的属性,如下所示:
let object: IObject = {};
object["foo"] = "bar";
问题是在中定义的键IIndexable
只能是string
or类型,number
因为我的对象的键都是可选的,所以它们的类型是string | undefined
。我得到的错误信息是:
'string | 类型的属性'fullName' undefined' 不能分配给字符串索引类型'string'。
我不能让我的对象的键不是可选的,因为我的对象有时可能是空的。我也尝试制作对象的 type IObject | {}
,但那样我仍然无法访问它的属性。
有没有办法解决这个问题?