나단 로젠탈 저/김유성 역 |
서두
자바스크립트를 공부하고, 실제로 사용하려고 했지만, 너무나 어려웠다. 가장 어렵다고 생각한 부분이 "자동완성"을 제대로 지원하지 않는것.
Type이 정확하지 않기 때문에, 내가 parameter로 전달해야 하는것도 명확하지 않았고, 모든것을 다 알고(혹은 외우고) 호출해야 하는 일이 어려웠다.
그래서 타입스크립트를 공부해 보기로 결심.
에이콘 출판사의 "타입스크립트 마스터 2/e - 예제로 배우는 타입스크립트"를 구매 했다.
출판사에 있는 정오표에 표시된 것 말고도 잘못 된 곳이 보여, 이곳에 정리해 두고자 한다. 지금 발견한건 딸랑 하나라.. 나중에 더 추가 될 수 있을지 모르겠다.
책을 다 읽었다. 당근 완벽하게 모든 내용을 이해한건 아니다. ㅋㅋ 아래 내용중 내가 잘 모르는 상태로 "잘못됐다"라고 이야기 하는것도 있으니, 이 글을 읽는 사람이 잘 가려서 읽기를 바란다.
책 후기
-
TypeScript의 문법은 거의 java와 비슷하다. 좀 다른게 있다면.
- 변수나 함수의 type을 정의 할 때, 변수명 뒤 쓰는 형태
public id : string;
- interface 정의에 field도 정의할 수 있음
interface A { id:string }
- field에 접근할 때, get set 키워드를 통해서 hooking 할 수 있음
get id() { return this._id; }
- 읽기 전용 속성은 final 대신, readonly
readonly name: string;
- 여러개의 type을 받고 싶을때는 Object 대신 any
var a : any = "aa"
- 여러개의 정해진 type(Union)을 받고 싶을때는 Object 대신 |
var a : string|number;
- 함수의 파라미터에서 같은 타입의, 다른 갯수에 대한 오버로딩시 모두 각각 정의하는 대신 ? 사용
funnction a( b: string, c?: string, d?: string) { ... }
-
함수의 파라미터에서 타입이 다른 오버로딩시 모두 각각 정의하는 대신 아래 문법 사용
function a ( b: string, c: string) : string; function a ( b: number, c: number) : number; function a ( b: any, c: any) : any { // code }
-
상속 받은 클래스의 생성자에서는 반드시 super()를 수동으로 불러줘야 한다. Java에서는 super()가 자동으로 호출 되지만, 타입스크립트는 그렇지 않음. 자동으로 호출해 주자는 건의(?)가 많았지만, JavaScript의 super-set이라는 등의 이유로 안된듯 하다.
- 변수나 함수의 type을 정의 할 때, 변수명 뒤 쓰는 형태
정오표 및 이해하기 어려운 곳 설명
3장 인터페이스, 클래스, 상속
216 페이지
- Simple Class는 id, name의 속성과 -> Simple Class는 id 속성과
- Simple Class에는 name 속성이 없다.
156 페이지
- myClosure; -> myClosure();
- 예제 소스에서 의도한것은 myClosure라는 함수가 실행되는것을 의도한 것이다(p157페이지의 상단 설명). 그러므로 함수 실행을 위해서 마지막에 () 를 붙여 주어야 한다.
159 페이지
-
제일 아래의 예제 처음에 아래의 코드 추가
enum PersonCategory { Audlt, Infant, Child } interface IPerson { Category: PersonCategory; canSignContracts(): boolean; printDetails(): void; }
-
아마도 PersonCategory에 관한 enum과, IPerson이라는 interface 관련 코드가 아예 빠진것 같다. p160 내용이나, 그 뒤의 예제 결과등을 참고하면, 위의 코드가 있어야 될 듯 하다.
174 페이지
- 제일 아래의 예제 코드에서 static staticName: string; -> static name: string;
- 다음페이지에 나오는 출력 결과물과, 설명을 보면 코드상의 속성 이름이 staticName이 아니라 name이 되어야 한다.
203 페이지 (오타아님)
- 유창한 구문으로 함수에 프라미스를 -> 플루언트 구문으로 함수에 프라미스를
- Fluent의 번역을 "유창한"이라고 했다. 그래서 오히려 이해하기 어렵다. fluent 에 대한 개념은 여러 라이브러리의 사용에서 나오므로, 그냥 "플루언트"라고 그대로 적는게 어떨까 싶다. "데코레이트"도 그대로 사용했으니깐. 324페이지에도 "유창한"이라고 적혀 있으니, 이후에 나오는건 모두 걍 fluent라고 생각하면 된다.
226 페이지
- containsErros 메서드와 ErrorHelper.trace 메서드를 -> ErrorHelper.containsErrors 메서드와 ErrorHelper.trace 메서드를
- ErrorHelper는 containsError와 trace 메소드를 모두 가지고 있는데, 한쪽에만 ErrorHelper의 메소드인것 처럼 적어 두었다.
261 페이지
- 정의에 모델 속성을 할당하려면 model: NoteModel 구문이나 -> 정의에 모델 속성을 할당하려면 model = NoteModel 구문이나
- 260페이지의 마지막에서 이미 model: NoteModel은 오류가 발생한다고 적혀 있다. 그러므로 261페이지의 내용은 model = NoteModel 이 되어야 한다.
274, 463 페이지 (오타아님)
- MVC는 모델-뷰-컨트롤러의 두 문자 집합으로 -> MVC는 모델-뷰-컨트롤러의 앞 글자의 집합으로
- 객체지향 모범 사례의 두 문자를 모은 SOLID 디자인 -> 객체지향 모범 사례의 앞 글자를 모은 SOLID 디자인
- 두 문자는 머리 두(頭)를 이야기 한 것으로 보인다. 그러므로 읽기 쉽게 "앞 글자" 라고 적어두는게 더 읽기 좋겠다.
323 페이지
- Jasmine uses a simple format for writing tests. Consider the following TypeScript code: -> 삭제
- 이미 위에 한글로 해석이 되어 있는데, 코드 쪽으로 설명이 내려와 있다. 그러므로 삭제
334 페이지, 335 페이지
- doCallback 함수 -> doCallBack 함수
- 예제에서는 "B"지만, 설명에서는 어떤 때는 "B", 어떤 때는 "b"로 사용한다. 그러니 잘 읽어내도록 하자. 심지어, 334페이지 아래쪽에는 let doCallback 으로 변수를 하나 만들어서 쓰고 있어서 더 혼동이 될 수 있다. 예제를 만들때 요런 점도 좀 고려해서 만들었으면 좋았을 텐데...
341 페이지, 342 페이지
- jasminjquery -> jasmin-jquery
- 라이브러리 이름이니 정확하게 "-"를 포함해서 적어야 한다.
363 페이지
- Id: 0, DisplayName: "none"}}); -> { Id: 0, DisplayName: "none"}});
- SelectedItem의 값으로 Id와 DisplayName을 넣는 Struture를 넣어야 하는것으로 보인다. 그렇게 되려면 "{"를 제일 앞에 추가해 줘서 객체(?) 형태로 만들어야 한다.
09장 타입스크립트 호환 프레임워크 테스트 는 생략함
- TypeScript 자체를 공부하기 위해서 책을 보는것이라. 지금 당장은 테스트용 프레임워크를 열심히 볼 필요는 없다고 판단. ㅋ. 그래서 걍 이 부분은 읽지도 않고 패스함.ㅋ.
417 페이지
- mod1.print(); -> m1mod1.print();
- 첫번째 예제에서 let m1mod1 으로 정의해서 쓰고 있기 때문에, 다음줄에 있는 코드는 당연히 m1mod1.print(); 가 되어야 한다.
426 페이지 (오타아님)
- 글 내용을 보면, "main.js파일에서는..." 이런 내용이 나오는데, 어디에도 그 main.js 파일을 찾을 수 없다. 그냥 작가가 있다고 생각하고 이야기 한 것인지 모르겠다. 그래서 책 내용을 읽을때, 독자도 상상력을 가지고 읽으면 될 것 같다.
429 페이지
- 항목 이름은 'jasmineboot'로 -> 항목 이름은 'jasmine-boot'로
- 소스코드에서는 물론이고, 직전의 설명에서도 'jasmine-boot'로 설명 되고 있다.
432 페이지
- 다음 AMD 오류인 filenot-found 오류일 수 있다. -> 다음 AMD 오류인 file-not-found 오류일 수 있다.
- 이전 설명에서도 file-not-found 와 같이 중간에 모두 - 을 넣어 두었다.
436 페이지 (오타아님)
- 중간에 보면 http-server를 실행하고 결과를 보여주는 설명이 있는데, http-server를 설치하는 방법은 설명도 안 해 줬다. ( 설마.. 9장에서 해 줬나? ). http-server를 설치하려면 console(cmd)창에서 아래의 명령을 입력해 주면 된다.
npm install http-server -g
- 그 이후
http-server
를 실행시키면 된다.
448 페이지, 451 페이지, 565 페이지 등 (오타이님)
-
{{{body}}}
- handlebars 템플릿은 일반적으로 {{ }} 처럼, 이중 괄호를 2개만 쓴다. 그런데 예제에서는 {{{ }}} 에 대한 설명 없이 body만 {{{body}}}로 사용중이다.
- handlerbars는 {{ }} 를 사용하게 되면, 단순 String으로 치환하는것 이외에, HTML Tag와 관련되는것들을 모두 화면에 출력할 수 있도록 치환해 준다. 예를 들어 title이 "
제목은 귀여워 >_<
" 와 같다면, "제목은 귀여워 >_<
" 와 같이 치환한다. -
하지만 {{{ }}} 를 사용하면 치환하지 않고, 그대로 String이 들어가게 된다. 여기에서는 {{{body}}} 영역에 각종 HTML 코드(
<p>
나<br>
등)가 들어가야 페이지 HTML 페이지 구성을 할 수 있기 때문에 {{{ }}}를 사용한 것이다.
'공부 > 컴퓨터' 카테고리의 다른 글
Vue.js 가이드 문서 - 2018년 7월 23일 기준 (0) | 2018.07.24 |
---|---|
Do it! Node.js 프로그래밍 - 실제 서버로 구동 가능한 코드로 배운다. (0) | 2018.07.17 |
Docker에 facebook에서 만든 ReDex 설치시 가이드 문서에 부족한 부분 정리 (2) | 2016.07.07 |
자바스크립트 완벽 가이드 6e 번역개정판 - 나름대로 정오표 및 공부 (0) | 2016.03.31 |
Windows에서 Docker Toolbox로 Docker 사용하기 (1) | 2015.11.23 |