繁体   English   中英

检查 TypeScript 中类型内的类型

[英]Checking Types within Types in TypeScript

我刚刚开始使用 TypeScript 所以请原谅简单。

问题:我正在努力为 arrays 数组构建一个类型,每个数组都包含一个字符串和一个 object。

测试 Object:

const testObject = {
  "test": {
    bgColor: "green",
    text: "hello",
    image: `./test/slideImgTest.jpg`
  },
  "test2": {
    bgColor: "blue",
    text: "goodbye",
    image: `./test/slideImgTest.jpg`
  },
  "test3": {
    bgColor: "red",
    text: "Jack",
    image: `./test/slideImgTest.jpg`
  },
}

类型:

interface SlideTypes {
  bgColor: string,
  text: string,
  image: string
};
type SlideTypesArray = [string, SlideTypes][];

我用这些数据做什么:

const allSlideData: [string, SlideTypesArray] = Object.entries(testObject);

错误信息:

目标需要 2 个元素,但源可能有更少。

问题:

我了解错误消息告诉我的内容,但我认为我在执行此操作时提供了 2 个元素。

我没有传递多个元素吗? 是元素类型吗? 是我的语法吗?

任何帮助将非常感激。 提前致谢。

你可以这样做

但是那样(Object.values)你没有 object 的密钥

const allSlideData: SlideTypes[] = Object.values(testObject);

或者这种方式不会丢失钥匙

interface SlideTypesArray {
    name: string
    slide: SlideTypes
}


const allSlideData: SlideTypesArray[] = Object.entries(testObject).map(([key, value]) => ({ name: key, slide: value }))

const allSlideData: [string, SlideTypesArray]表示allSlideData是一个数组,其中第一个元素是string ,第二个元素是SlideTypesArray

但是您分配给allSlideData的值是Object.entries(testObject) ,它是一个任意长度的数组,具体取决于testObject中有多少条目。 因此,您会收到错误消息“目标需要 2 个元素,但源可能有更少。” 目标是指类型,而源是指值。

Object.entries返回一个array ,其中每个元素都是一个包含两个元素的array[key, value] 那就是您在此处描述的类型:

type SlideTypesArray = [string, SlideTypes][];

所以你要

const allSlideData: SlideTypesArray = Object.entries(testObject);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM