Cum să extragi un argument varargs dintr-un tip record în TypeScript?


Am variabila x definită după cum urmează:

function foo (a: string, ...nums: number[]): string {
  return a;
}
const x: Parameters<typeof foo>

// Inferred: const x: [string, ...number[]]

Acum, vreau să extrag șirul și numerele cu tipurile corecte. Pentru șir, am:

const sExplicit: Parameters<typeof foo>[0] //easy to specify
const sInferred = x[0]                     //type inferred correctly

Vreau să declar o variabilă care să țină toate numerele. Cum pot să fac asta?

Am încercat următoarele:

const numsExplicit: ??? Howto specify the type
const numsInferred = x.slice(1) // incorrectly inferred as (string | number)[]

Răspuns #1

Tipul de căutare este doar după număr | șir.

Aș adăuga eu însumi vectorul:

function foo (a: string, ...nums: number[]): string {
 return a;
}
declare const x: Parameters<typeof foo>[1][];