在 Record<string, string> 中创建新属性表示可以未定义新值
Posted
技术标签:
【中文标题】在 Record<string, string> 中创建新属性表示可以未定义新值【英文标题】:Creating new property in Record<string, string> says that new value can be undefined 【发布时间】:2020-11-16 01:06:09 【问题描述】:我升级到 typescript 4-beta 并且我的减速器使用 Record
Type ' [x: string]: string | undefined; ' is not assignable to type 'Record<string, string>'. Index signatures are incompatible. Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'.
这是带有示例的 TS 游乐场。
type State = Record<string, string>
const initialState = ;
const reducer = (state: State = initialState, action: type: string; payload: key: string, value: string):State =>
switch(action.type)
case "foo":
return
...state,
[action.payload.key]: action.payload.value
default:
return state;
playground link
非常感谢,也许我只是愚蠢,我做错了什么。
【问题讨论】:
【参考方案1】:这是一个已知问题 (microsoft/TypeScript#39494),并且已在当前的 TypeScript 4.0 夜间版本中得到修复(请参阅 playground link)。因此,当 TS 4.0 正式发布时,这可能不会成为问题。希望有帮助;祝你好运!
【讨论】:
谢谢。我找不到这个问题。以上是关于在 Record<string, string> 中创建新属性表示可以未定义新值的主要内容,如果未能解决你的问题,请参考以下文章
我有一个 map<string, vector<record>>,如何从 vector<record> 中删除记录?
为啥类型 `Record<string,unknown>` 不接受具有已定义键的对象作为值
React Navigation + TypeScript 错误:类型“EventStackParams”不满足约束“Record<string, object |未定义>'