[英]How to type an object key in Typescript?
我有一个简单的 function 在参数中采用 object。 为了只接收有效数据,我需要输入 object 的密钥,如下所示:
type DataType = "about" | "favorites" | "username"; type UpdatedData = { [key in DataType]: any }; function onSave (updatedData: UpdatedData){ //do stuff } // in a component const onClickSave = () => onSave({ "about": text });
Typescript 抛出以下错误:
'{ about: text; 类型的参数 }' 不可分配给“UpdatedData”类型的参数。 输入'{关于:文本; }' 缺少“UpdatedData”类型的以下属性:收藏夹、用户名
如何解决这个问题? 当然,我可以写[key: string]
而不是[key in DataType]
,但这样打字就没用了。
由于UpdatedData
的属性可以是可选的,只需添加?
使它们成为可选的。
编辑:正如@Jérémie B 提到的那样,仍然允许使用空的{}
。
type DataType = "about" | "favorites" | "username";
type UpdatedData = { [key in DataType]?: any };
function onSave (updatedData: UpdatedData){
}
const text = "hello"
const onClickSave = () => onSave({ "about": text });
尝试这个:
type DataType = "about" | "favorites" | "username";
type Expand<U> = U extends string ? { [key in U]: any } : never
type UpdatedData = Expand<DataType>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.