簡體   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