배열 T를 사용하고 마지막 요소를 반환하는 제네릭 Last<T>를 구현합니다.
type Last<T extends any[]> =
T extends [...infer First,infer Last]?
Last:
never;
type Last<T extends any[]> = [any, ...T][T["length"]];
length를 활용한 풀이도 있었다.
T에는 length-1개의 요소가 있으므로 [any, ...T]의 length 인덱스의 값을 가져오는 방식이다.
이 방식은 첫 번째 예시인 Last<[]>를 충족시키지 못하므로, 첫 요소를 never로 바꿔야 한다
또, 내 방식과는 다른 점이 하나 더 있는데
number[]를 Last에 넣게 되면 내 정의는 never를, 위 정의는 number를 반환한다.
그러므로 `
type Last<T extends any[]> = [never, ...T][T["length"]];
가 가장 잘 어울리는 듯 하다