网站搜索

typescript - 从 Array<T> 获取类型


我有一个自动生成的类型,

export type ReferralListByCustomerQuery = { referralListByCustomer?: Array<{ code: string, referredByID: string } |  undefined> |  undefined };

但是我需要一种数组的项类型:

type WhatINeed = { code: string, referredByID: string } |  undefined

所以,我知道如何提取数组类型:

type IncludingArray = ReferralListByCustomerQuery[referralListByCustomer]

但问题是如何提取数组项。谷歌后:

type OnlyItem =IncludingArray[number] 不起作用

答案#1

这与 T[number] 相同,但你也可以这样提取:

type ElementOf<T> = T extends Array<infer U> ? U : never

然后你可以这样使用它

type SomeArrayType = Array<{foo: string}>;
type TheTypeOfThoseElements = ElementOf<SomeArrayType>;
type SomeOtherType = ElementOf<typeof someVariable>;

你可能还需要从类型中省略 | undefined,可以这样做:

type DefinitelyDefined<T> = Exclude<T, undefined>