Books/Do It 타입스크립트 프로그래밍

    8장 람다 라이브러리

    이번 장은 람다라는 이름의 유명한 함수형 유틸리티 라이브러리의 기능을 알아보자. 9-1 람다 라이브러리 소개 람다 패키지는 8장에서 소개한 compose나 pipe를 사용하는 함수 조합을 쉽게 할 수 있게 설계된 오픈소스 자바스크립트 라이브러리로서 다음과 같은 특징이 있다. 타입스크립트 언어와 100% 호환 compose와 pipe 함수 제공 자동 커리 기능 제공 포인트가 없는 고차 도움 함수 제공 조합 논리(combinatory logic) 함수 일부 제공 하스켈 렌즈 라이브러리 기능 일부 제공 자바스크립트 표준 모나드 규격과 호환 실습 프로젝트 구성 npm init -y npm i -D typescript ts-node @types/node mkdir src // ramda package npm i ..

    8장 함수 조합의 원리와 응용

    함수 조합은 작은 기능을 하는 여러 함수를 pipe나 compose라는 이름의 함수로 조합하여 조금씩 더 의미 있는 함수로 만들어 가는 코드 설계 기법이다. 이번 장은 함수 조합의 토대가 되는 고차 함수와 커리, 그리고 이들을 이용한 함수 조합에 간해 살펴보자. 8-1 함수형 프로그래밍이란? 함수형 프로그래밍은 순수 함수와 선언형 프로그래밍의 토대 위에 함수 조합과 모나드 조합으로 코드를 설계하고 구현하는 기법이다. 함수형 프로그래밍은 다음 세 가지 수학 이론에 기반을 두고 있다. 람다 수학(ramda calculus) : 조합 논리와 카테고리 이론의 토대가 되는 논리 수학 조합 논리(combinatory logic) : 함수 조합의 이론적 배경 카테고리 이론(category theory) : 모나드 조..

    7장 비동기 콜백 함수

    이번 장은 비동기 API를 사용하는 코드를 쉽게 작성하게 하는 Promise 클래스와 async/await 구문에 대해 살펴보자 7-1 비동기 콜백 함수 이번 장은 노드제이에스가 제공하는 readFile과 같은 비동기 API를 예로 들고 있기 때문에 tsconfig.json 파일에 별도의 설정이 필요하다. // tsconfig.json { "compilerOptions": { "module": "commonjs", "esModuleInterop": true, "target": "es2015", "moduleResolution": "node", "outDir": "dist", "baseUrl": ".", "sourceMap": true, "downlevelIteration": true, // 이 부분을 t..

    6장 반복기와 생성기

    이번 장에서는 타입스크립트 언어가 제공하는 반복기와 반복기 제공자, 그리고 생성기에 대해 알아보자. 6-1 반복기 이해하기 실습 프로젝트 설정 이번 장에서 소개하는 예제는 Node.js 설정과 tsconfig.json 파일에 별도의 설정이 필요하다. 먼저 다음 명령을 터미널에서 실행하자. npm init -y npm i -D typescript ts-node @types/node mkdir src 다음, tsc —init 명령으로 tsconfig.json 파일을 생성하고 다음 내용으로 대체하자. // tsconfig.json { "compilerOptions": { "module": "commonjs", "esModuleInterop": true, "target": "es2015", "moduleReso..

    5장 배열과 튜플

    함수형 프로그래밍에서 배열은 매우 중요한 기능을 한다. 이번에는 순수 함수를 다루면서 배열과 튜플에 대해 살펴보자. 5-1 배열 이해하기 자바스크립트에서 배열은 Array 클래스의 인스턴스이며 다음처럼 선언한다. let 배열 이름 = new Array(배열 길이) 배열에 담긴 각각의 값을 아이템(item) 혹은 원소(element)라고 한다. [ ]단축구문 자바스크립트는 [ ]라는 단축 구문을 제공한다.. let numbers = [1,2,3]; let strings = ["Hello", "World"]; console.log(numbers, strings) // [1,2,3] ["Hello","World"] 자바스크립트에서 배열은 객체다 자바스크립트에서 배열은 다른 언어와 다르게 객체이다. 배열은 Ar..

    4장 함수와 메서드

    자바스크립트에서 함수는 function 키워드와 화살표 ⇒ 기호로 만드는 두 가지 방법이 있다. 타입스크립트 함수는 이를 바탕으로 타입 기능을 추가한 것이다. 이번 장은 함수를 효과적으로 구현하는 방법과 클래스의 메서드를 구현하는 방법을 알아보자. 4-1 함수 선언문 자바스크립트에서 함수는 function 키워드로 만드는 함수와 ⇒ 기호로 만드는 화살표 함수 두 가지 방법이 있다. 다음은 function 키워드로 만드는 함수 구조이다. function 함수이름(매개변수1, 매개변수2[,...]){ body } 타입스크립트 함수 선언문은 자바스크립트 함수 선언문에서 매개변수와 함수 반환 값에 타입 주석을 붙이는 형태로 구성된다. function 함수이름(매개변수:타입1, 매개변수:타입2[,...]):반환값..

    3장 객체와 타입

    3-1 타입스크립 변수 선언문 타입스크립트 기본 제공 타입 자바스크립트는 다음 표에서 보는 타입을 기본으로 제공한다. 타입스크립트는 자바스크립트와 호환성을 위해 자바스크립트 타입은 물론 그에 대응하는 타입스크립트 타입 도한 제공한다. 유형 자바스크립트 타입 타입스크립트 타입 수 타입 Number number 불리언타입 Boolean boolean 문자열 타입 String string 객체 타입 Object object let과 const 키워드 ES5 자바스크립트는 variable의 앞 에 글자를 딴 var라는 키워드를 사용해 변수를 선언할 수 있었다. 아지만 다른 프로그래밍 언어와는 다르게 동작하기 때문에 ESNext 자바스크립트는 let과 const라는 키워드를 도입해 다른 프로그래밍 언어와 같은 방..

    2장 타입스크립트 프로젝트 생성과 관리

    2-1 타입스크립 프로젝트 만들기 타입스크립트 개발은 노드제이에스 프로젝트를 만든 다음, 개발 언어를 타입스크립트로 설정하는 방식으로 진행. 노드제이에스 프로젝트는 디렉터리를 하나 만들고 여기에 package.json이란 이름의 파일을 만드는 것으로 시작한다. package.json은 노드제이에스가 관리하는 패키지 관리 파일로서 프로젝트 정보와 관련 패키지가 기록된다. 즉, 필요한 패키지를 관리할 수 있다. 프로젝트 생성자 관점에서 패키지 설치하기 npm install 혹은 npm i 명령으로 설치가능하다. 이때 패키지 설치 명령은 두 가지 옵션을 줄 수 있다. —save : 프로젝트를 실행할 대 필요한 패키지로 설치한다. 패키지 정보가 package.json dependencies 항목에 등록된다 —s..

    1장 타입스크립트와 개발환경 만들기

    1-1 타입스크립란 무엇인가? 세 종류의 자바스크립트 ES5 ESNext 타입스크립트 타입스크립는 누가 만들었나? C# 언어를 창시한 아네르스 하일스베르가 핵심 개발자로 참여하고 있으며 구글의 Angular.js 팀이 앵귤러 버전 2를 만들면서 타입스크립트를 채택한 이후부터 널리 알려졌다. 자바스크립트에 타입 기능이 있으면 좋은 이유 A라는 개발자가 다음과 같은 코드를 만들었다고 가정 function makePerson(name, age) {} B라는 개발자가 이 코드를 이용, 오류가 발생했으면 원인이 무엇인지 찾기가 어렵다 makePerson(32, "Jack") But 처음부터 타입 기능을 이용해 구현했다면 이러한 문제는 발생하지 않는다 function makePerson(name: string, a..