Generic 꼬리에 꼬리 물기 😅
호출 시그니처를 가진 객체 예시를 보면서 함수 타입 자체와 사용 방식이 크게 다르지 않아,
두 방식을 비교해보았다.
type Player = <T>(a: T[]) => T;Player는 함수 타입const playerFunc: Player = (a) => a[0]; type Player = { <T>(a: T[]): T }Player는 함수처럼 호출 가능한 객체const playerFunc: Player = (a) => a[0];
| 함수 타입 자체 | 호출 시그니처를 가진 객체 |
|---|---|
type Player = <T>(a: T[]) => T; | type Player = { <T>(a: T[]): T } |
| 화살표 함수 형식 | 객체 타입에 함수 호출 시그니처 포함 |
| 추가 속성 못 가짐 | 추가 속성 가능 |
type A = <T>(a: T[]) => T;
const obj: A = () => {}; // obj.props = 123; // 속성 추가 못함
type A = {
<T>(a: T[]): T;
description: string;
}
const obj:A = Object.assign(a => a[0], {description: 'string'}); // 속성 추가 가능
궁금증
호출 시그니처를 가진 객체 문법을 이렇게는 가능한가?type Player = { <T>(a: T[]) => T }문법 오류!
객체 타입 내에서는 화살표 함수 문법을 사용할 수 없음.