type SuperPrint = {
(arr: number[]) : void
(arr: booleanp[) : void
(arr: string[]): void
}
const superPrint: SuperPrint = (arr) => {
arr.forEach(i => console.log(i))
}
superPrint([1, 2, 3, 4])
superPrint([true, false, false])
superPrint(["a", "b", "c"])
> void, boolean, unknown 이런 건 concrete type
type SuperPrint = {
# 타입스크립트에게 이 callsignature가 generic을 받는다는 걸 알려주는 방법
<TypePlaceholder>(arr: TypePlaceholder[]) : void
# 보통은 간략하게 이렇게 씀
<T>(arr: T[]): T
}
superPrint([1, 2, 3, 4])
superPrint([true, false, false])
superPrint(["a", "b", "c"])
superPrint([1, 2, true, false, "hello"])
> generic은 타입을 일일이 써줄 필요 없음
> generic은 내가 요청한대로 signature를 만들 수 있는 방법
# generic 추가
type SuperPrint = <T, M>(a: T[], b:M) => T
const a = superPrint([1, 2, 3, 4], "x")
type Player<E> = {
name: string
extraInfo: E
}
type SeojinExtra = {
favFood:string
}
type SeojinPlayer = Player<SeojinExtra>
const seojin: SeojinPlayer = {
name: "seojin",
extraInfo: {
favFood: "sweetpotato"
}
}
const lynn: Player<null> = {
name: "lynn",
extraInfo: null
}
'Web > TypeScript' 카테고리의 다른 글
[TypeScript] Interfaces (0) | 2024.07.07 |
---|---|
[TypeScript] 객체지향 - Classes (0) | 2024.07.05 |
[TypeScript] 기본 문법 - 함수 (1) | 2024.07.05 |
[TypeScript] 기본 문법 - Type (1) | 2024.07.04 |
[TypeScript] 를 쓰는 이유 (0) | 2024.07.04 |