👶 TypeScript

👶 TypeScript

오버로드된 함수 타입

오버로드된 함수 타입 호출 시그니처에서 사용한 함수 타입 문법(type Fn = (...) => ...)은 단축형 호출 시그니처(shorthand call signature)입니다. 해당 호출 시그니처를 더욱 명확하게 표현할 수 있습니다. 다시 Log를 예로 살펴보겠습니다. // 단축형 호출 시그니처 type Log1 = (message: string, userName?: string) => void // 전체 호출 시그니처 type Log2 = { (message: string, userName?: string): void } 위의 두 코드는 문법만 조금 다를 뿐 모든 면에서 같습니다. 위의 Log 함수처럼 간단한 상황이라면 단축형을 활용하되 더 복잡한 함수라면 전체 시그니처를 사용하는 것이 좋을 때도..

👶 TypeScript

문맥적 타입화

문맥적 타입화(contextual typing) // log(message: string, userName?: string) 함수 type Log = (message: string, userName?: string) => void let log: Log = ( // ① message, // ② userName = '로그인 안했는데염...' // ③ ) => { // ④ let time = new Date().toISOString() console.log(time, message, userName) } 위의 코드는 함수의 매개변수 타입을 명시하지 않아도 되는 사례입니다. 이미 log의 타입을 Log로 지정했으므로 TypeScript가 message의 타입을 string으로 추론할 수 있기 때문입니다. 이는..

👶 TypeScript

호출 시그니처

호출 시그니처 아래 코드의 sum은 함수이므로 sum은 Function 타입이라고 말할 수 있습니다. function sum(a: number, b: number): number{ return a + b } Function은 사람들이 즐겨 사용하는 타입은 아닙니다. object로 모든 객체를 가리킬 수 있는 것처럼 Function은 모든 함수의 타입을 뜻할 뿐이며 이것이 가리키는 특정 함수와 타입과 관련된 정보는 아무것도 알려주지 않습니다. sum은 number를 인수로 받아 한 개의 number를 반환하는 함수입니다. TypeScript에선 다음과 같이 표현할 수 있습니다. (a: number, b: number) => number 이 코드는 타입스크립트의 함수 타입 문법으로, 호출 시그니처(call ..

👶 TypeScript

반복자

반복자(Iterator) 반복자(iterator)와 제너레이터(generator)는 상생관계입니다. 제너레이터로 값의 스트림을 생성할 수 있고, 반복자로 생성된 값을 소비할 수 있기 때문입니다. 가령 createFibonacciGenerator 함수를 호출하면 Symbol.iterator 프로퍼티와 next 메서드를 모두 정의한 값을 얻게 됩니다. 즉, 이터러블과 반복자 두 가지가 결합된 제너레이터가 반환됩니다. Symbol.iterator와 next를 구현하는 객체(또는 클래스)를 만들어 반복자나 이터러블을 직접 정의할 수 있습니다. 아래는 1에서 10까지의 숫자를 반복하는 반복자를 정의하는 예시입니다. let numbers = { *[Symbol.iterator]() { for (let n = 1; n

개발자 린다씨
'👶 TypeScript' 카테고리의 글 목록 (18 Page)