타입스크립트 마스터 2/e [예제로 배우는 타입스크립트]
- 원서명Mastering TypeScript - Second Edition: Build enterprise-ready, industrial-strength web applications using TypeScript and leading JavaScript frameworks (ISBN 9781786468710)
- 지은이나단 로젠탈(Nathan Rozentals)
- 옮긴이김유성
- ISBN : 9791161751337
- 40,000원
- 2018년 03월 28일 펴냄 (절판)
- 페이퍼백 | 652쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
타입스크립트는 마이크로소프트에서 대규모 자바스크립트 개발을 위해 만든 언어로, 자바스크립트를 만들어내는 컴파일러다. 자바스크립트를 생성하기 때문에 기존 자바스크립트 라이브러리나 프레임워크를 사용하면서도 강타입을 사용한 객체지향 언어처럼 개발할 수 있다. 이 책은 타입스크립트의 기본 자료형부터 인터페이스나 클래스 같은 객체지향 기능과 데코레이터, 제네릭 같은 고급 기능까지 설명한다. 기존 자바스크립트 라이브러리를 사용하기 위한 선언 파일을 만드는 방법과 유명 라이브러리를 사용하는 데 필요한 선언 파일 사용법을 살펴보고, 앵귤러, 리액트 같은 웹 애플리케이션 프레임워크를 사용하는 다양한 예제를 살펴본다.
이 책에서 다루는 내용
■ 타입스크립트의 핵심과 고급 언어 기능에 대한 이해
■ 선언 파일로 기존 자바스크립트 라이브러리와 외부 프레임워크 통합
■ 제이쿼리, 백본, 앵귤러, 오렐리아, 리액트, 노드, 익스프레스 같은 유명 자바스크립트 프레임워크
■ 자스민, 프로트랙터, 셀레늄으로 만드는 애플리케이션 대규모 테스트 스위트
■ 모듈, AMD 로더, Requre, SystemJs로 애플리케이션 코드 구성
■ 의존성 주입을 비롯한 고급 객체지향 디자인 원칙
■ 오렐리아, 앵귤러, 리액트, 백본의 다양한 MVC 구현 이해와 비교
■ CSS 애니메이션을 포함해 사용자 경험을 향상한 완전한 단일 페이지 애플리케이션 제작
이 책의 대상 독자
타입스크립트를 배우고 싶은 자바스크립트 개발자나 기술을 향상하고 싶은 타입스크립트 경력자를 위한 책이다. 타입스크립트 언어와 컴파일러를 최대한 활용해 언어 구조, 테스트 주도 개발, 객체지향 기법을 기초부터 고급까지 배운다. 이 책은 자바스크립트 애플리케이션에 강타입, 객체지향, 디자인 모범 사례를 어떻게 도입하는지 보여준다.
이 책의 구성
1장, ‘타입스크립트 - 도구와 프레임워크 옵션’에서는 타입스크립트 개발 시작에 앞선 준비 과정을 다룬다. 타입스크립트 언어와 컴파일러를 사용할 때의 장점과 몇몇 유명한 IDE로 완전한 개발 환경을 설정하는 방법을 살펴본다.
2장, ‘타입, 변수, 함수 기법’에서는 기본 타입과 타입 어노테이션에서 시작해 변수, 함수, 고급 언어 기능으로 논의를 옮겨가며 타입스크립트 언어를 소개한다.
3장, ‘인터페이스, 클래스, 상속’에서는 2장에서 작업한 내용을 바탕으로 객체지향 개념과 인터페이스 기능, 클래스, 상속을 소개한다. 팩토리 디자인 패턴을 통해 개념을 보여준다.
4장, ‘데커레이터, 제네릭, 비동기 기능’에서는 데커레이터, 제네릭과 같은 고급 기능을 살펴보고 비동기 프로그래밍 개념을 살펴본다. 타입스크립트가 프라미스와 async, await 구조로 비동기 기능을 지원하는 방법을 살펴본다.
5장, ‘선언 파일 작성과 사용’에서는 단계별로 기존 자바스크립트 코드에서 선언 파일을 만드는 과정을 살펴보고 선언 파일을 작성할 때 흔히 쓰는 구문의 목록을 나열해본다. 목록의 구문은 선언 파일 구문에 대해 바로 훑어볼 수 있는 참조 가이드가 되도록 구성했다.
6장, ‘외부 라이브러리’에서는 개발 환경에서 DefinitelyTyped 저장소를 통해 선언 파일을 사용하는 방법을 살펴본다. 이어서 유명 자바스크립트 프레임워크인 백본, 앵귤러 1, ExtJs에 호환되는 타입스크립트 코드 작성 방법을 살펴본다.
7장, ‘타입스크립트 호환 프레임워크’에서는 타입스크립트와 전체 병합 가능한 유명 프레임워크를 살펴본다. MVC 개념을 살펴본 후 백본, 오렐리아, 앵귤러 2, 리액트에서 이 디자인 패턴을 어떻게 구현했는지 비교해본다.
8장, ‘테스트 주도 개발’에서는 테스트 주도 개발이 무엇인지 살펴보고 다양한 단위 테스트를 만드는 과정을 통해 안내한다. 자스민 라이브러리를 사용해 데이터 주도 테스트와 비동기 로직 테스트 방법을 보여준다. 테스트 러너, 테스트 보고 지속 통합 빌드 서버에 대해 살펴본다.
9장, ‘타입스크립트 호환 프레임워크 테스트’에서는 타입스크립트 호환 프레임워크별로 예제 애플리케이션을 만들어 단위 테스트, 통합 테스트, 인수 테스트 과정을 살펴본다. 테스트 가능성의 개념 및 애플리케이션 설계와 구현의 미묘한 변화가 애플리케이션 테스트 범위를 더 넓게 제공할 수 있음을 살펴본다.
10장, ‘모듈화’에서는 모듈이 무엇인지, 어떻게 사용하는지와 타입스크립트가 지원하는 모듈 생성 방식인 CommonJs와 AMD를 살펴본다. 이어서 Require와 SystemJs를 포함한 모듈 로더에서 모듈을 사용하는 방법을 보여준다. 노드에서 모듈 사용법을 자세히 살펴보고 예제 익스프레스 애플리케이션을 만들면서 마무리한다.
11장, ‘객체지향 프로그래밍’에서는 객체지향 프로그래밍 개념에 대해 살펴보고 객체지향 원칙에 맞게 애플리케이션 컴포넌트를 정리하는 방법을 보여준다. 복잡한 UI 상호작용을 상태 패턴과 중재자 패턴으로 구현하는 객체지향 모범 사례도 자세히 살펴본다.
12장, ‘의존성 주입’에서는 서비스 로케이션과 의존성 주입 개념 그리고 어떻게 일반적인 애플리케이션 설계 문제를 해결하는지 살펴본다. 데커레이터로 간단한 의존성 주입 프레임워크를 구현하는 방법을 보여준다.
13장, ‘애플리케이션 만들기’에서는 노드와 익스프레스에서 생성한 HTML, REST 목적지 작성 및 사용, 데이터 연동을 포함한 웹 애플리케이션 개발의 핵심 부품을 만든다. 오렐리아, 앵귤러 2, 리액트에 익스프레스 서버, REST 목적지, 데이터 연동을 통합하는 방법을 보여준다.
14장, ‘손에 흙 묻히기’에서는 책 전체를 통해 익힌 개념과 만들었던 컴포넌트를 조합해 앵귤러 2와 익스프레스 단일 페이지 애플리케이션을 만든다. 애플리케이션에는 테스트 주도개발, 상태 패턴과 중재자 패턴, 익스프레스 REST 목적지, 객체지향 원칙, 모듈화, CSS 애니메이션 개념이 포함된다.
목차
목차
- 1장. 타입스크립트-도구와 프레임워크 옵션
- 타입스크립트 소개
- ECMA 스크립트 표준
- 타입스크립트의 장점
- 컴파일
- 강타입
- 자바스크립트와 타입스크립트의 정의
- 캡슐화
- 퍼블릿, 프라이빗 접근자
- TypeScript IDEs
- 노드 기반 컴파일
- tsconfig
- 비주얼 스튜디오
- 비주얼 스튜디오 프로젝트 만들기
- 기본 프로젝트 설정
- 비주얼 스튜디오 디버깅
- 웹스톰
- 웹스톰 프로젝트 생성
- 기본 파일
- 간단한 HTML 애플리케이션 만들기
- 크롬에서 웹 페이지 실행
- 크롬에서 디버깅
- 비주얼 스튜디오 코드
- 비주얼 스튜디오 코드 설치
- 비주얼 스튜디오 코드 둘러보기
- 그 외의 편집기
- 그런트
- 노드 기반 컴파일
- 요약
- 타입스크립트 소개
- 2장. 타입, 변수, 함수 기법
- 기본 타입
- 자바스크립트 타이핑
- 타입스크립트 타이핑
- 타입 구문
- 타입 추론
- 덕 타이핑
- 템플릿 문자열
- 배열
- for
- any 타입
- 명시적 형 변환
- 열거형
- 상수 열거형(Const enums)
- 상수값
- let 키워드
- 함수
- 함수 반환 타입
- 익명 함수
- 선택적 인자(Optional Parameters)
- 기본 인자(Default parameters)
- 나머지 인자(Rest parameters)
- 함수 콜백
- 함수 시그니처
- 함수 오버로드
- 고급 타입
- 공용체(Union)
- 타입가드
- 타입 별명
- Null과 undefined
- 객체 나머지, 전개(Object rest and spread)
- 요약
- 기본 타입
- 3장. 인터페이스, 클래스, 상속
- 인터페이스
- 선택적 속성
- 인터페이스 컴파일
- 클래스
- 클래스 속성
- 인터페이스 구현
- 클래스 생성자
- 클래스 함수
- 인터페이스 함수 정의
- 클래스 수정자
- 생성자 접근 제어자
- 읽기 전용 속성
- 클래스 속성 접근자
- 정적 함수
- 정적 속성
- 네임스페이스
- 상속
- 인터페이스 상속
- 클래스 상속
- super 키워드
- 함수 오버로딩
- protected 클래스 멤버
- 추상 클래스
- 자바스크립트 클로저
- 인터페이스, 클래스, 상속 - 팩토리 패턴
- 비즈니스 요구사항
- 팩토리 패턴이 하는 일
- IPerson 인터페이스
- 특별 클래스
- 팩토리 클래스
- 팩토리 클래스 사용
- 요약
- 데커레이터
- 인터페이스
- 4장. 데커레이터, 제네릭, 비동기 기능
- 데커레이터
- 데커레이터 구문
- 다중 데커레이터
- 데커레이터 팩토리
- 클래스 데커레이터 인자
- 속성 데커레이터
- 정적 속성 데커레이터
- 메서드 데커레이터
- 메서드 데커레이터 사용
- 인자 데커레이터
- 데커레이터 메타데이터
- 데커레이터 메타 데이터 사용
- 제네릭
- 제네릭 구문
- 제네릭 클래스 인스턴스화
- T 타입 사용
- T 타입 제한
- 제네릭 인터페이스
- 제네릭으로 새 객체 만들기
- 비동기 언어 기능
- 프라미스
- 프라미스 구문
- 프라미스 사용
- 콜백 대 프라미스
- 프라미스에서 값 반환
- async와 await
- await 오류
- 프라미스 대 await 구문
- await 메시지
- 요약
- 전역 변수
- HTML에서 자바스크립트 사용
- 구조화된 데이터
- 선언 파일 작성
- 모듈 키워드
- 인터페이스
- 공용체 타입
- 모듈 병합
- 선언 구문 참조
- 함수 오버라이드
- 자바스크립트 구문
- 선언 파일 구문
- 중첩 네임스페이스
- 자바스크립트 구문
- 선언 파일 구문
- 클래스
- 자바스크립트 구문
- 선언 파일 구문
- 클래스 네임스페이스
- 자바스크립트 구문
- 선언 파일 구문
- 클래스 생성자 오버로드
- 자바스크립트 구문
- 선언 파일 구문
- 클래스 속성
- 자바스크립트 구문
- 선언 파일 구문
- 클래스 함수
- 자바스크립트 구문
- 선언 파일 구문
- 정적 속성, 함수
- 자바스크립트 구문
- 선언 파일 구문
- 전역 함수
- 자바스크립트 구문
- 선언 파일 구문
- 함수 시그니처
- 자바스크립트 구문
- 선언 파일 구문
- 선택적 속성
- 자바스크립트 구문
- 선언 파일 구문
- 함수와 모듈 병합
- 자바스크립트 구문
- 선언 파일 구문
- 함수 오버라이드
- 요약
- 선언 파일 다운로드
- NuGet 사용
- 확장 프로그램 관리자 사용
- 선언 파일 설치
- 콘솔에서 패키지 매니저 사용
- 패키지 설치
- 패키지명 검색
- 특정 버전 설치
- typings 사용
- 패키지 검색
- typings 초기화
- 선언 파일 설치
- 특정 버전 설치
- 선언 파일 재설치
- Bower 사용
- npm과 @types 사용
- 외부 라이브러리 사용
- 자바스크립트 프레임워크 선정
- 백본
- 백본 상속 사용
- 인터페이스 사용
- 제네릭 구문 사용
- ECMAScript 5 사용
- 백본 타입스크립트 호환성
- 앵귤러
- 앵귤러 클래스와 $scope
- 앵귤러 타입스크립트 호환성
- 상속 - 앵귤러 vs 백본
- ExtJS
- ExtJS 클래스 생성
- 형 변환 사용
- ExtJS 특화 타입스크립트 컴파일러
- 요약
- MVC란?
- 모델
- 뷰
- 컨트롤러
- MVC 요약
- MVC 사용의 장점
- 예제 애플리케이션 윤곽?
- 백본
- 렌더링 성능
- 백본 설정
- 백본 모델
- 백본 ItemView
- 백본 CollectionView
- 백본 애플리케이션
- 오렐리아 사용
- 오렐리아 설정
- 개발 고려사항
- 오렐리아 성능
- 오렐리아 모델
- 오렐리아 뷰
- 오렐리아 부트스트랩
- 오렐리아 이벤트
- 앵귤러 2
- 앵귤러 2 설정
- 앵귤러 2 모델
- 앵귤러 2 뷰
- 앵귤러 2 성능
- 앵귤러 2 이벤트
- 리액트
- 리액트 설정
- 리액트 뷰
- 리액트 부트스트랩
- 리액트 이벤트
- 요약
- 테스트 주도 개발
- 단위 테스트, 통합 테스트, 인수 테스트
- 단위 테스트
- 통합 테스트
- 인수 테스트
- 단위 테스트 프레임워크
- 자스민
- 간단한 자스민 테스트
- 자스민 스펙러너
- Matchers
- 테스트 startup과 teardown
- 데이터 주도 테스트
- 스파이 사용
- 콜백에 스파이 사용
- 가짜로 스파이를 사용하기
- 비동기 테스트
- done() 사용
- 자스민 픽스처
- DOM 이벤트
- 자스민 러너
- 테스템
- 카르마
- Protractor
- 셀레늄 사용
- 지속적 통합
- CI 사용의 장점
- 빌드 서버 선택
- 팀 파운데이션 서버
- 젠킨스
- 팀시티
- 통합 테스트 결과서
- 요약
- 예제 애플리케이션 테스트
- 테스트 가능하도록 예제 수정
- 백본 테스트
- 복합 모델
- 뷰 업데이트
- DOM 이벤트 업데이트
- 모델 테스트
- 복합 모델 테스트
- 렌더링 테스트
- DOM 이벤트 테스트
- 백본 테스트 요약
- 오렐리아 테스트
- 오렐리아 컴포넌트
- 오렐리아 컴포넌트 뷰-모델
- 오렐리아 컴포넌트 뷰
- 컴포넌트 렌더링
- 오렐리아 이름 규칙
- 오렐리아 테스트 설정
- 오렐리아 단위 테스트
- 렌더링 테스트
- 오렐리아 종단간 테스트
- 오렐리아 테스트 요약
- 앵귤러 2 테스트
- 애플리케이션 업데이트
- 앵귤러 2 테스트 설정
- 앵귤러 2 모델 테스트
- 앵귤러 2 렌더링 테스트
- 앵귤러 2 DOM 테스트
- 앵귤러 2 테스트 요약
- 리액트 테스트
- 다중 진입점
- 리액트 수정
- 리액트 컴포넌트 단위 테스트
- 리액트 모델과 뷰 테스트
- 리액트 DOM 이벤트 테스트
- 요약
- 모듈 기초
- 모듈 익스포트
- 모듈 임포트
- 모듈 이름 변경
- 기본 익스포트
- 변수 익스포트
- AMD 모듈 로딩
- AMD 컴파일
- AMD 모듈 설정
- Require 설정
- AMD 브라우저 설정
- AMD 모듈 의존성
- Require 부트스트랩
- Require 설정 오류 수정
- 잘못된 의존성
- 404 오류
- SystemJs 모듈 로딩
- SystemJs 설치
- SystemJs 브라우저 설정
- SystemJs 모듈 의존성
- 자스민 부트스트랩
- 노드와 익스프레스 사용
- 익스프레스 설정
- 익스프레스에서 모듈사용
- 익스프레스 라우팅
- 익스프레스 템플릿
- Handlebars 사용
- 익스프레스 POST 이벤트
- HTTP 요청 리다이렉트
- 노드와 익스프레스 요약
- 요약
- 객체지향 원칙
- 인터페이스 프로그래밍
- SOLID 원칙
- 단일 책임 원칙
- 개방 폐쇄 원칙
- 리스코프 치환 원칙
- 인터페이스 분리 원칙
- 의존 관계 역전 원칙
- 사용자 인터페이스 디자인
- 콘셉트 디자인
- 앵귤러 2 설정
- 부트스트랩 사용
- 사이드 패널 생성
- 오버레이 생성
- 전환효과 조정
- 상태 패턴
- 상태 인터페이스
- 구체적인 상태
- 중재자 패턴
- 모듈화 코드
- navbar 컴포넌트
- sidenav 컴포넌트
- RightScreen 컴포넌트
- 자식 컴포넌트
- 중재자 인터페이스 구현
- 중재자 클래스
- 중재자 사용
- DOM 이벤트 대응
- 요약
- 메일 보내기
- nodemailer 사용
- 환경 설정
- 로컬 SMTP 서버 사용
- 객체 의존성
- 서비스 로케이션
- 서비스 로케이션 안티패턴
- 의존성 주입
- 의존성 주입기 만들기
- 인터페이스 채택
- 열거형 채택
- 클래스 채택
- 생성자 주입
- 데커레이터 주입
- 클래스 정의 사용
- 생성자 인자 파싱
- 인자 타입 찾기
- 속성 주입
- 의존성 주입 사용
- 재귀 주입
- 요약
- UI 경험
- 브라켓 사용
- Emmet 사용
- 로그인 패널 만들기
- 오렐리아 웹 사이트
- 노드와 오렐리아 호환
- 오렐리아 애플리케이션 서비스
- 오렐리아 노드 페이지
- 오렐리아 컴포넌트
- JSON 처리
- 오렐리아 폼
- 데이터 전송
- 오렐리아 메시지
- 앵귤러 2 웹 사이트
- 앵귤러 설정
- 앵귤러 2 페이지 서빙
- 앵귤러 2 컴포넌트
- JSON 처리
- 데이터 전송
- 익스프레스 리액트 웹 사이트
- 익스프레스와 리액트
- 리액트 애플리케이션 서비스
- 다중 package
- 리액트 컴포넌트
- REST 사용
- 로그인 패널 컴포넌트
- 리액트 데이터 바인딩
- JSON 데이터
- 요약
- Board Sales 애플리케이션
- 앵귤러 2 기반 애플리케이션
- 단위 테스트
- 상태 중재자 테스트
- 로그인 화면 상태
- 패널 통합
- JSON 데이터 구조
- BoardList 컴포넌트
- HTTP 요청 테스트
- 앵귤러의 가상 Http 모듈
- 가상 Http 모듈 사용
- 보드 목록 렌더링
- UI 이벤트 테스트
- 보드 상세 보기
- 필터 적용
- 로그인 패널
- 애플리케이션 구조
도서 오류 신고
정오표
정오표
[본문]
데커레이터
->
데코레이터
[코드 내 표기]
>
->
|
- 112 페이지 본문 1개, 예제 코드 2개
- 113 페이지 오류 메세지 2개 , 예제 코드 3개
- 115 페이지 예제코드 1개
- 117 페이지 예제 코드 1개
- 118 페이지 예제 코드 1개, 오류 메세지의 1개
5장
- 230 페이지 예제 코드 1개
- 232 페이지 선언 파일 구문 부분 2개
[p.50 : 4행]
onImplicitAny 옵션
->
noImplicitAny 옵션
[p.126 : 6행]
SimpleClass는 id, name의 속성과
->
SimpleClass는 id의 속성과
[p.174 : 코드 3행]
static staticName: string;
->
static name: string;
[p.182 : 본문 1행]
ClassWithMetaData 클래스가 대한
->
ClassWithMetaData 클래스에 대한
[p.207 : 코드]
interface IPromiseMessage {
message: string;
id: number;
}
->
중복 단락 삭제
[p.226 : 아래에서 3행]
containsErrors 메서드와 ErrorHelper.trace 메서드를 포함하는
->
ErrorHelper.containsErrors 메서드와 ErrorHelper.trace 메서드를 포함하는
[p.508 : 아래에서 2행]
resolv 콜백을 호출한다.
->
resolve 콜백을 호출한다.