Typescript 初始化空对象
2020-10-08
689
我正在学习 Typescript,并且正在努力解决下面的代码问题。
const profile = state.currentProfile;
type literalProfile = keyof Partial<Omit<Profile, 'id'>>;
const values: Record<literalProfile, string | undefined> = {
name: '',
avatar: '',
title: '',
subtitle: '',
};
Object.entries(data).forEach((entry) => {
const key = entry[0] as literalProfile;
const value = entry[1];
if (value && profile[key] !== value) {
values[key] = value;
}
});
await this.$axios.patch(`/users/profiles/${profile.id}`, values);
问题是,是否有任何方法可以将值初始化为空对象,就像这样?
const values: Record<literalProfile, string | undefined> = {};
因为如果我执行这样的操作,Typescript 会突出显示错误
Type '{}' is missing the following properties from type 'Record<"name" | "title" | "subtitle" | "avatar", string | undefined>': name, title, subtitle, avatar
如果我尝试这样的操作
let values: Record<literalProfile, string | undefined>;
然后 Typescript 说
Variable 'values' is used before being assigned.
在这行
await this.$axios.patch(`/users/profiles/${profile.id}`, values);
所以我不知道如何解决这个问题,有什么想法吗?
1个回答
当前,您正在使用
record&lt; listeralprofile,string |不确定的&gt;
。
而是,您应该使用
{[键入文字范围内的键]?:string}
。
有微妙的差异。两者都支持
undefined
作为值,但是通过使用可选字段关键字
?
您可以在初始化对象时省略这些字段。
003748155
>
Wex
2020-10-08