typescript - Hämta typ från Array<T>


Jag har en automatgenererad typ,

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

Men jag behöver en typ av Array-objekt:

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

Så, jag vet hur man extraherar array-typen:

type IncludingArray = ReferralListByCustomerQuery[referralListByCustomer]

men frågan är hur man extraherar array-objekt. efter Google:

type OnlyItem =IncludingArray[number] fungerar inte

Svar #1

Detta är samma som T[number], men du kan extrahera så här också:

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

Du kan sedan använda det så här

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

Du kan också behöva utelämna | undefined från typen, vilket kan göras så här:

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