如何将字符串类型转换为 Typescript 中的一种对象类型?

Posted

技术标签:

【中文标题】如何将字符串类型转换为 Typescript 中的一种对象类型?【英文标题】:How to cast string type to one of object types in Typescript? 【发布时间】:2021-11-26 14:11:07 【问题描述】:

我有如下界面说:

export interface Address_findUserAddress 
  addressCity: string | null;
  addressCountry: string | null;
  addressFirstLine: string | null;

还有以下功能:

const onAddressSelected = (address: Address_findUserAddress) => 
    const mappedAddress = addressAnswerKeys.reduce(
      (acc, k) => ( ...acc, [k.answerKey]: address[k.addressKey] AS_ONE_Of_Address_FindUserAddress ),
       as Record<string, string>
    );
    ...
  

address[k.addressKey] - 这段代码说:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“地址查找用户地址”。 在“Address_findUserAddress”类型上找不到带有“string”类型参数的索引签名。

如何将 address[k.addressKey] AS_ONE_Of_Address_FindUserAddress 转换为地址类型的键之一? k.addressKey 是 字符串

【问题讨论】:

【参考方案1】:

你可以投射钥匙

address[k.addressKey as keyof Address_findUserAddress]

【讨论】:

以上是关于如何将字符串类型转换为 Typescript 中的一种对象类型?的主要内容,如果未能解决你的问题,请参考以下文章

打字稿:如何将字符串转换为类型

如何在 TypeScript 中将字符串转换为数字?

如何在 TypeScript 中将字符串转换为数字?

Typescript 映射类型,其中仅保留可为空的属性并转换为字符串类型

Angular 5 / Typescript - 如何将复杂的 json 对象转换为类

TypeScript 中的类型化枚举实例