有没有办法从接口属性中提取数组类型的泛型类型?



假设我有这样的东西。
我想从A中的对象属性中取出number | string部分,并在B中重用它。


interface A {
objects: Array<number | string>
}
interface B{
// I want to extract this part from the objects of the "A" interface
object: number | string  
}

我能想到这样的事情


type ObjectType = number | string
interface A {
objects: Array<ObjectType>
}
interface B{
object: ObjectType
}

但我真正想要的是这样的东西


interface A {
objects: Array<number | string>
}
interface B{
// I am making this up, but is there something like this in Typescript??
object: ExtractType<A, "objects">
}

您可以借助条件类型中的类型推断来推断数组的项类型:

type ArrayItemType<T extends Array<any>> = T extends Array<infer I> ? I : any
interface A {
objects: Array<number | string>
}
interface B{
// (property) B.object: string | number
object: ArrayItemType<A["objects"]>
}

操场

最新更新