Typescript-无法将“ undefined”类型分配给“ string | type” 编号| 符号'

可爱的忍者

我有一个类型 export type status = 'success' | 'error' | undefined;

现在,有一个对象映射到一个图标

const iconsMap: Record<status, React.ReactSVGElement> = {
  error: ErrorIcon,
  success: SuccessIcon,
};

在这里,由于undefinediconsMap中没有键,因此会导致打字错误

Type 'string | undefined' does not satisfy the constraint 'string | number | symbol'. Type 'undefined' is not assignable to type 'string | number | symbol'.

我该如何解决?

Aleksey L.

您可以排除undefined使用NonNullable实用程序:

const iconsMap: Record<NonNullable<status>, React.ReactSVGElement> = {
  error: ErrorIcon,
  success: SuccessIcon,
};

并正式收到错误不是因为没有键undefined,而是因为Record具有通用类型约束并且仅接受string | number | symbol

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在TextArea中反应Typescript错误:类型'string'无法分配给类型编号

枚举类型的对象键-不能分配给'string | 编号| 符号'

Typescript将接口或类型分配给Record <string,string>

无法将“String.Type”类型的值分配给“String”类型?- 斯威夫特

输入'string | 编号| 空| undefined'不能分配给'null'类型

即使在 .filter 函数删除 undefined 之后,Typescript 类型 (string | undefined ) 也不能分配给类型 string[]

禁止将Type类型的变量分配给Typescript中其他类型的变量

Typescript,JSON.parse错误:“类型'null'无法分配给类型'string'。”

Angular TypeScript:“类型 '(string | undefined)[]' 不能分配给类型 'string[]'。”

Typescript + Angular:将 aa 类型分配给 Type<T> 失败

无法将“String”类型的值分配给“UILabel”类型

无法将“Int”类型的值分配给“String”类型

无法将“String”类型的值分配给“MyOrderTableViewCell”类型

如何解决`Type 'string[] | undefined' 不能以最好的方式分配给类型 'string[]'.`?

使用模拟数据:Typescript无法分配给type

TypeScript 错误:类型 'string' 不能分配给类型 'number | ""'

在TypeScript中,为什么可以将“ null”分配给类型“ undefined”的变量,反之亦然

“类型'string | string []'无法分配给类型'string'

Typescript:“ Observable <{}>”类型无法分配给“ Observable”类型

Typescript错误类型'ArrayBuffer'无法分配给类型'Item []'

如何配置TypeScript来避免:类型'string'不能分配给类型'“ desc” | “ asc” | undefined'.ts(2322)?

将 [String : String]' 分配给类型 '[[String : String]]'

Typescript无法将对象文字分配给通用类型

React + Typescript高阶函数“无法分配给类型”错误

Javascript类型“ false”无法分配给类型“ string”

TypeScript错误:无法将类型“ void”分配给类型“ boolean”

React&TypeScript HOC-为什么我无法将类型'{}'分配给类型P?

Angular TypeScript错误-无法将类型'number'分配给类型'any []'

Dart-无法将参数类型'String'分配给参数类型'String'