DEV Community

Discussion on: From dynamic to static typing in three steps

Collapse
 
lioness100 profile image
Lioness100

Note that the typescript function you suggested won't always be accurate if an array has more than one element type. For example:

// string | number
last([1, 2, '3']);
Enter fullscreen mode Exit fullscreen mode

If you wanted to make it strictly and absolutely correct, you'd have to make the array readonly and create a function such as this:

const last = <T extends readonly any[]>(arr: T): [undefined, ...T][T['length']] =>
  arr[arr.length - 1];
Enter fullscreen mode Exit fullscreen mode

And when calling it, use the as const cast:

// '3'
last([1, 2, '3'] as const);
Enter fullscreen mode Exit fullscreen mode