반응형

JavaScript

    [Typescript Challenges] Awaited, If, Concat

    [Typescript Challenges] Awaited, If, Concat

    Typescript Challenges에 있는 타입스크립트 문제를 easy 단계부터 풀어 보고 있습니다. 3문제씩 풀이와 함께 업로드합니다. Awaited https://github.com/type-challenges/type-challenges/blob/master/questions/189-easy-awaited/README.md 문제: Promise로 들어온 타입을 Promise 해제된 타입으로 변환하는 문제. 1) 우선 Promise 타입이 아닐 경우에는 에러가 발생해야 하기 때문에 generic 타입에 extends로 타입 제한을 부여합니다. T extends Promise 2) 이제 Promise 안에 담긴 타입을 무엇인지 알아야 합니다. 이 때 필요한 키워드가 infer라는 "타입 추론" 키워..

    [Typescript Challenges] First of Array, Length of Tuple, Exclude

    [Typescript Challenges] First of Array, Length of Tuple, Exclude

    Typescript Challenges에 있는 타입스크립트 문제를 easy 단계부터 풀어 보려고 합니다. easy에서는 3문제씩 풀이와 함께 업로드합니다. First of Array https://github.com/type-challenges/type-challenges/blob/master/questions/14-easy-first/README.md 문제: 배열을 generic 타입으로 입력했을 때 해당 배열의 첫 번째 요소 타입을 구현하는 문제. 1) 우선 대부분의 경우에는 T[0]로 하게 되면 배열 자신의 값으로 되기 때문에 타입이 지정이 됩니다. 2) 고려해야 할 부분은 빈 배열을 넣었을 경우입니다. 타입스크립트에서도 삼항연산자를 쓸 수 있습니다. 조건은 extends 키워드를 한정적으로 부여해..

    [Typescript Challenges] Pick, Readonly, Tuple to Object

    [Typescript Challenges] Pick, Readonly, Tuple to Object

    Typescript Challenges에 있는 타입스크립트 문제를 easy 단계부터 풀어 보려고 합니다. easy에서는 3문제씩 풀이와 함께 업로드합니다. Pick https://github.com/type-challenges/type-challenges/blob/master/questions/4-easy-pick/README.md 문제: Pick와 같은 결과가 나오도록 타입스크립트로 구현하기 1) K가 우선 interface의 key 값을 기반으로 하는 타입이어야 한다. 따라서 keyof를 활용해 두 번째 제네릭 값을 구성한다. K extends keyof T 2) keyof 결과(=K)가 union이기 때문에 K 중 하나를 key 값으로 두고, value는 해당 key 값에 대한 value가 되게 하..

    [함수형 자바스크립트] Symbol, Iterator, Generator

    [함수형 자바스크립트] Symbol, Iterator, Generator

    자바스크립트에서 함수형 프로그래밍(FP)을 하기 위한 기본 개념인 Symbol, Iterator, Generator에 대해 간단히 알아보도록 하겠습니다. Symbol() Symbol() 함수로부터 반환되는 모든 심볼 값은 고유합니다. 따라서 어떠한 객체의 키가 될 수 있습니다. Array, Map, Set 을 생성하면 고유한 Symbol.iterator 을 가지고 있게 됩니다. 일반 객체({}, object)는 Symbol.iterator를 가지고 있지 않기 때문에 iterable하지 않은 값입니다. Symbol.iterator를 통해 값을 하나씩 실행할 수 있게 됩니다. Iterator, Iterable 아래와 같이 Iterator를 만들게 되면 next() 메소드를 통해 value, done값을 가진..