[英]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.