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