【发布时间】:2020-12-05 00:58:52
【问题描述】:
我有一个简单的 redux 操作:
export interface UpdateUserSettingsPayloadType {
videoInput?: MediaDeviceInfo;
audioInput?: MediaDeviceInfo;
audioOutput?: MediaDeviceInfo;
}
export const updateUserSettings = (
payload: UpdateUserSettingsPayloadType
): UserSettingsActionTypes => {
return {
type: UPDATE_USER_SETTINGS,
payload,
};
};
我正在使用一个对象将正确的类型从 MediaDeviceKind 映射到我的状态键,
// note `type` is type MediaDeviceKind = "audioinput" | "audiooutput" | "videoinput"
const typeMap = {
audioinput: "audioInput",
audiooutput: "audioOutput",
videoinput: "videoInput",
};
dispatch(
updateUserSettings({
[`${typeMap[type]}`]: "a string", // <- incorrect
})
);
只有当我明确声明 audioInput 或 videoInput 作为 updateUserSettings 参数对象的键时,它才会显示错误。
dispatch(
updateUserSettings({
[`${typeMap[type]}`]: "I should error", // in
audioInput: "i do error",
})
);
更新 1
我意识到密钥被推断为[x: string]:
当我真正需要它时推断为videoInput | audioInput | audioOutput
这是我除了错误之外的:
【问题讨论】:
标签: typescript redux react-redux