在打字稿中声明对象类型

高拉夫·索尼

需要声明一个对象类型。得到下面提到的错误:

 type CarKeys = "mercedes" | "mercedes-sedan" | "mercedes-hatch";

    interface Car { color: string; } 

    const KEY_MAP = { mercedes: 'mercedes', mercedes_sedan: 'mercedes-sedan', mercedes_hatch: 'mercedes-hatch'};

        const carType:Record<CarKeys, Car> = {
         [KEY_MAP.mercedes]:{ color: 'red'},
         [KEY_MAP.mercedes_sedan]: {color: 'yellow'},
         [KEY_MAP.mercedes_hatch]: {color: 'black'}
        };

TypeScript抛出以下错误:

类型'{[x:字符串]:{颜色:字符串}}'缺少类型'记录'的以下属性:奔驰,梅赛德斯轿车,奔驰车舱口`

骇客

有两件事,首先是您写的type CarKeys = "mercedes" | "mercedes_sedan" | "mercedes_hatch",都带有下划线,但是其中的值KEY_MAP带有连字符,这可能不适合您解决。

其次,默认情况下,TS将推断typeof KEY_MAP{ mercedes: string; ... }而不是{ mercedes: "mercedes", ... }

这意味着typeof [KEY_MAP.mercedes]实际上是string,而不是"mercedes"字符串文字,因此typeofcarType实际上是{ [key: string]: Car },这就是错误的原因。

要解决此问题,您可以添加as constKEY_MAP

const KEY_MAP = {
  mercedes: 'mercedes',
  mercedes_sedan: 'mercedes-sedan',
  mercedes_hatch: 'mercedes-hatch'
} as const;

或者,您可以将其转换为 enum

enum KEY_MAP {
  mercedes = 'mercedes',
  mercedes_sedan = 'mercedes-sedan',
  mercedes_hatch ='mercedes-hatch'
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在打字稿函数中声明“ this”的类型?

来自分类Dev

在打字稿中映射对象类型

来自分类Dev

在打字稿中声明“返回类型”的简写

来自分类Dev

如何在打字稿中声明地图类型?

来自分类Dev

如何在打字稿中定义对象类型的对象

来自分类Dev

如何基于相同类型中提到的键在打字稿中声明类型?

来自分类Dev

在打字稿中创建数组类型

来自分类Dev

无法在打字稿中创建对象

来自分类Dev

如何在打字稿中声明带有部分特定键的“记录”类型?

来自分类Dev

如何在打字稿中展平泛型类型声明?

来自分类Dev

在打字稿中声明具有最小/最大长度的字符串类型

来自分类Dev

如何在打字稿中为方法链声明递归类型?

来自分类Dev

在打字稿和typeof中声明数组是一个对象

来自分类Dev

打字稿中的对象类型

来自分类Dev

在打字稿中的sammy js中声明路由

来自分类Dev

在打字稿中的sammy js中声明路由

来自分类Dev

如何在打字稿中获取对象值作为类型?

来自分类Dev

无法在打字稿中声明React上下文?

来自分类Dev

在打字稿模块中声明异步方法

来自分类Dev

如何在打字稿中键入以下对象/类型

来自分类Dev

您可以在打字稿中动态扩展类型吗?

来自分类Dev

在打字稿中,如何定义异步功能的类型

来自分类Dev

在打字稿中为嵌套名称空间创建类型

来自分类Dev

如何在打字稿中公开API返回的类型

来自分类Dev

在打字稿中抽象出通用类型参数

来自分类Dev

在打字稿中检查API响应的类型

来自分类Dev

在打字稿中检查可选道具类型时出错

来自分类Dev

如何在打字稿中检查数组的类型

来自分类Dev

使用类的方法在打字稿中创建联合类型

Related 相关文章

热门标签

归档