{"version":1,"pages":[{"id":"-LCJPPW_sGEMDXuSV9U-","title":"자바스크립트 개발자를 위한 타입스크립트","pathname":"/ts-for-jsdev","siteSpaceId":"sitesp_mIY2K","description":""},{"id":"-LCsWm99hNlro7X-SYWg","title":"들어가며","pathname":"/ts-for-jsdev/intro","siteSpaceId":"sitesp_mIY2K","description":""},{"id":"-LCJVFkhPiPC57Pc6qYI","title":"1.0 들어가며","pathname":"/ts-for-jsdev/01-introducing-typescript/intro","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트란 무엇인지 알아보고, 그 역사와 더불어 왜 타입스크립트를 배워야 하는지에 대한 근거를 제시한다.","breadcrumbs":[{"label":"01 타입스크립트 소개"}]},{"id":"-LCsWm9D8zeALin5vfi6","title":"1.1 정적 타입 분석","pathname":"/ts-for-jsdev/01-introducing-typescript/static-type-analysis","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"01 타입스크립트 소개"}]},{"id":"-LCsWm9E0FKSzF_3-yIW","title":"1.2 왜 타입스크립트인가","pathname":"/ts-for-jsdev/01-introducing-typescript/why-typescript","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"01 타입스크립트 소개"}]},{"id":"-LCsWm9FAI3dEUKa0F9g","title":"1.3 타입스크립트의 구성요소","pathname":"/ts-for-jsdev/01-introducing-typescript/elements-of-typescript","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"01 타입스크립트 소개"}]},{"id":"-LCsWm9GtaV0oAvXyjkG","title":"1.4 타입스크립트의 역사","pathname":"/ts-for-jsdev/01-introducing-typescript/history-of-typescript","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"01 타입스크립트 소개"}]},{"id":"-LCJviMaz4KxNlvSifmb","title":"2.0 ECMAScript","pathname":"/ts-for-jsdev/02-ecmascript/intro","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트의 기반이 되는 언어 ECMAScript 최신 명세에 추가된 여러 유용한 기능들을 살펴본다.","breadcrumbs":[{"label":"02 ECMAScript"}]},{"id":"-LCJwM3hvqjlVY_snn4Y","title":"2.1 블록 수준 스코프","pathname":"/ts-for-jsdev/02-ecmascript/block-level-scope","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"}]},{"id":"-LCJwnVayX_Ykl5XrpnX","title":"2.1.1 let을 이용한 선언","pathname":"/ts-for-jsdev/02-ecmascript/block-level-scope/declaration-using-let","siteSpaceId":"sitesp_mIY2K","description":"let을 이용해 재할당이 가능한 블록 레벨 변수를 선언할 수 있다.","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.1 블록 수준 스코프"}]},{"id":"-LCJxOs4eAA72exZlaS6","title":"2.2.2 const를 이용한 선언","pathname":"/ts-for-jsdev/02-ecmascript/block-level-scope/declaration-using-const","siteSpaceId":"sitesp_mIY2K","description":"const를 이용해 재할당이 불가능한 블록 레벨 변수를 선언할 수 있다.","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.1 블록 수준 스코프"}]},{"id":"-LCJxmQkFWSgHyNfMcxS","title":"2.2.3 스코프 베스트 프랙티스","pathname":"/ts-for-jsdev/02-ecmascript/block-level-scope/scope-best-practice","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.1 블록 수준 스코프"}]},{"id":"-LCK1dOxVPsHuQo54kp7","title":"2.2 객체와 배열","pathname":"/ts-for-jsdev/02-ecmascript/object-and-array","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"}]},{"id":"-LCK1yaoHmeUh8HlNep0","title":"2.2.1 비구조화 할당","pathname":"/ts-for-jsdev/02-ecmascript/object-and-array/destructuring-assignment","siteSpaceId":"sitesp_mIY2K","description":"비구조화 할당 문법을 이용해 이전까지 여러 라인에 걸쳐 적어야만 했던 할당을 보다 간결하게 쓸 수 있다.","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.2 객체와 배열"}]},{"id":"-LCsWm9QfBTi7S4NUm2G","title":"2.2.2 나머지 연산자와 전개 연산자","pathname":"/ts-for-jsdev/02-ecmascript/object-and-array/rest-and-spread-operator","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.2 객체와 배열"}]},{"id":"-LCK33zJii3GupCqYlJi","title":"2.2.3 객체 리터럴 변경사항","pathname":"/ts-for-jsdev/02-ecmascript/object-and-array/object-literal-diff","siteSpaceId":"sitesp_mIY2K","description":"최신 ECMAScript에서의 객체 리터럴 변경사항에 대해 다룬다.","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.2 객체와 배열"}]},{"id":"-LCK3Xvy-ujysRq3AmwT","title":"2.3 함수","pathname":"/ts-for-jsdev/02-ecmascript/function","siteSpaceId":"sitesp_mIY2K","description":"최신 ECMAScript 명세에서 자바스크립트 함수에 어떤 변경점이 있었는지 알아본다.","breadcrumbs":[{"label":"02 ECMAScript"}]},{"id":"-LCK3bOInqOUxwxc-oJ1","title":"2.3.1 기본 매개변수","pathname":"/ts-for-jsdev/02-ecmascript/function/default-parameter","siteSpaceId":"sitesp_mIY2K","description":"ES6 기본 매개변수 문법을 사용해 매개변수의 기본값을 간결하게 표현할 수 있다.","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.3 함수"}]},{"id":"-LCK3qhuWeJhOeb0gai6","title":"2.3.2 화살표 함수","pathname":"/ts-for-jsdev/02-ecmascript/function/arrow-functions","siteSpaceId":"sitesp_mIY2K","description":"화살표 함수는 자바스크립트 함수 내부에서 this가 야기하는 혼란을 줄여준다.","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.3 함수"}]},{"id":"-LCK4JpTvwT07P_WIwBb","title":"2.4 템플릿 리터럴","pathname":"/ts-for-jsdev/02-ecmascript/template-literal","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"}]},{"id":"-LCK4VIGwTiGvvQJ1WpY","title":"2.4.1 멀티라인 문자열","pathname":"/ts-for-jsdev/02-ecmascript/template-literal/multiline-string","siteSpaceId":"sitesp_mIY2K","description":"템플릿 리터럴을 이용해 여러 줄에 걸친 문자열을 손쉽게 표현할 수 있다.","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.4 템플릿 리터럴"}]},{"id":"-LCK4fVzxAc7CNmzj9Sy","title":"2.4.2 문자열 치환","pathname":"/ts-for-jsdev/02-ecmascript/template-literal/string-substitution","siteSpaceId":"sitesp_mIY2K","description":"템플릿 리터럴은 문자열의 일부를 특정 값으로 치환할 수 있는 수단을 제공한다.","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.4 템플릿 리터럴"}]},{"id":"-LCK4ufU2pX5tG65XlZ4","title":"2.5 원소 순회","pathname":"/ts-for-jsdev/02-ecmascript/element-enumeration","siteSpaceId":"sitesp_mIY2K","description":"최신 ECMAScript 명세에 추가된 원소 순회 수단에 대해 알아본다.","breadcrumbs":[{"label":"02 ECMAScript"}]},{"id":"-LCK67xpCcm8c_L2_QzU","title":"2.5.1 forEach 메소드","pathname":"/ts-for-jsdev/02-ecmascript/element-enumeration/foreach","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.5 원소 순회"}]},{"id":"-LCK5_8PVMRYDW1AFQhd","title":"2.5.2 for-of 문법","pathname":"/ts-for-jsdev/02-ecmascript/element-enumeration/for-of","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.5 원소 순회"}]},{"id":"-LCK6OKKeNxvrxyiYHHi","title":"2.5.3 이터레이터 프로토콜","pathname":"/ts-for-jsdev/02-ecmascript/element-enumeration/iterator-protocol","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.5 원소 순회"}]},{"id":"-LCK6Y5Cr5oZYXEfy46g","title":"2.5.4 이터러블 프로토콜","pathname":"/ts-for-jsdev/02-ecmascript/element-enumeration/iterable-protocol","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.5 원소 순회"}]},{"id":"-LCK7IqUZ3N2ZWAwPxgJ","title":"2.6 비동기 처리","pathname":"/ts-for-jsdev/02-ecmascript/handling-asynchronous","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"}]},{"id":"-LCK7VC8N34fTPcAaGuN","title":"2.6.1 프로미스","pathname":"/ts-for-jsdev/02-ecmascript/handling-asynchronous/promises","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.6 비동기 처리"}]},{"id":"-LCK95WPJAyX7dcJJdvY","title":"2.6.2 Async / Await","pathname":"/ts-for-jsdev/02-ecmascript/handling-asynchronous/async-await","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"},{"label":"2.6 비동기 처리"}]},{"id":"-LCsWm9jfx_6pU2wW3cn","title":"2.7 맺으며","pathname":"/ts-for-jsdev/02-ecmascript/outro","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"02 ECMAScript"}]},{"id":"-LCNixvQKuoe_Mjeo8OS","title":"3.0 타입스크립트 기초 문법","pathname":"/ts-for-jsdev/03-basic-grammar/intro","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCspV91IaaPpET9Ugn_","title":"3.1 기본 타입","pathname":"/ts-for-jsdev/03-basic-grammar/primitive-types","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트가 제공하는 기본 타입을 살펴본다. 이후 다룰 모든 타입은 이 기본 타입들로부터 파생된다.","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCNl7SPbNDIp0MwW9BE","title":"3.2 배열과 튜플","pathname":"/ts-for-jsdev/03-basic-grammar/array-and-tuple","siteSpaceId":"sitesp_mIY2K","description":"순서가 있는 원소의 모음(collection)을 나타내는 가장 간단하면서도 유용한 자료구조인 배열, 그리고 그 사촌 튜플을 나타내는 타입에 대해 다룬다.","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCNrPacfcyM_WWQ1u-o","title":"3.3 객체","pathname":"/ts-for-jsdev/03-basic-grammar/object","siteSpaceId":"sitesp_mIY2K","description":"자바스크립트에서 가장 일반적이고 널리 사용되는 자료 구조인 객체의 타입에 대해 다룬다.","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCNt9rf4317_1ykvXnG","title":"3.4 타입 별칭","pathname":"/ts-for-jsdev/03-basic-grammar/type-alias","siteSpaceId":"sitesp_mIY2K","description":"타입 별칭(type alias)을 이용해 이미 존재하는 타입에 다른 이름을 붙여 복잡한 타입을 간단하게 쓸 수 있다. 또한, 프로그래머의 의도를 보다 명확하게 나타낼 수 있다.","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCNth7xRaWHVPGH98qF","title":"3.5 함수","pathname":"/ts-for-jsdev/03-basic-grammar/function","siteSpaceId":"sitesp_mIY2K","description":"자바스크립트 프로그램에서 가장 핵심적인 역할을 차지하는 함수 타입이 타입스크립트에서 어떻게 표현되는지 다룬다.","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCNxCNqRyDHUf3bezE8","title":"3.6 제너릭","pathname":"/ts-for-jsdev/03-basic-grammar/generics","siteSpaceId":"sitesp_mIY2K","description":"제너릭을 이용해 여러 타입에 대해 동일한 규칙을 갖고 동작하는 타입을 손쉽고 우아하게 정의할 수 있다.","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCNyIaQ8MCeUzyFu-RV","title":"3.7 유니온 타입","pathname":"/ts-for-jsdev/03-basic-grammar/union-type","siteSpaceId":"sitesp_mIY2K","description":"유니온 타입을 이용해 “여러 경우 중 하나”인 타입을 표현할 수 있다.","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCNyrao6-gGDrqdMOgy","title":"3.8 인터섹션 타입","pathname":"/ts-for-jsdev/03-basic-grammar/intersection-type","siteSpaceId":"sitesp_mIY2K","description":"인터섹션 타입을 이용해 “여러 경우에 모두 해당”하는 타입을 표현할 수 있다.","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCO-3Ezr4_HMlu_oG_L","title":"3.9 열거형","pathname":"/ts-for-jsdev/03-basic-grammar/enums","siteSpaceId":"sitesp_mIY2K","description":"유한한 경우의 수를 갖는 값의 집합을 표현하기 위해 사용하는 열거형(enum) 타입에 대해 배운다.","breadcrumbs":[{"label":"03 타입스크립트 기초 문법"}]},{"id":"-LCdOUML7p63gQLNy9QD","title":"4.0 들어가며","pathname":"/ts-for-jsdev/04-interface-and-class/intro","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트에서 가장 중요하고 자주 쓰이는 두 추상화 수단, 인터페이스와 클래스에 대해 다룬다.","breadcrumbs":[{"label":"04 인터페이스와 클래스"}]},{"id":"-LCdOZha8SaPeoDP74Cw","title":"4.1 인터페이스 기초","pathname":"/ts-for-jsdev/04-interface-and-class/interface-basics","siteSpaceId":"sitesp_mIY2K","description":"인터페이스의 기초적인 개념과 용례를 알아본다.","breadcrumbs":[{"label":"04 인터페이스와 클래스"}]},{"id":"-LCdPL1I_me8ShPzRaSk","title":"4.2 색인 가능 타입","pathname":"/ts-for-jsdev/04-interface-and-class/indexable-types","siteSpaceId":"sitesp_mIY2K","description":"동적인 색인을 표현하는 색인 가능 타입에 대해 다룬다.","breadcrumbs":[{"label":"04 인터페이스와 클래스"}]},{"id":"-LCdQgAb8nlOxmCfKlTJ","title":"4.3 인터페이스 확장","pathname":"/ts-for-jsdev/04-interface-and-class/extending-interfaces","siteSpaceId":"sitesp_mIY2K","description":"한 인터페이스가 다른 인터페이스를 확장하는 상황에 대해 이야기한다.","breadcrumbs":[{"label":"04 인터페이스와 클래스"}]},{"id":"-LCdRLZIchFpODKe1MlN","title":"4.4 클래스","pathname":"/ts-for-jsdev/04-interface-and-class/classes","siteSpaceId":"sitesp_mIY2K","description":"객체 지향적 구조화 수단인 클래스에 대해 다룬다.","breadcrumbs":[{"label":"04 인터페이스와 클래스"}]},{"id":"-LCqP_E1IMOwB_z7zx2m","title":"4.5 클래스 확장","pathname":"/ts-for-jsdev/04-interface-and-class/extending-classes","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"04 인터페이스와 클래스"}]},{"id":"-LCspV9ITHSWqfRZIQun","title":"4.6 클래스 심화","pathname":"/ts-for-jsdev/04-interface-and-class/class-advanced","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"04 인터페이스와 클래스"}]},{"id":"-LCnx5xjoUM2bxuLgsqU","title":"4.6.1 스태틱 멤버","pathname":"/ts-for-jsdev/04-interface-and-class/class-advanced/static-members","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"04 인터페이스와 클래스"},{"label":"4.6 클래스 심화"}]},{"id":"-LCnxByTXbkR4TYTOYcM","title":"4.6.2 접근 제어자","pathname":"/ts-for-jsdev/04-interface-and-class/class-advanced/access-specifiers","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"04 인터페이스와 클래스"},{"label":"4.6 클래스 심화"}]},{"id":"-LCnxPhXRF1oAnr2dB4-","title":"4.6.3 접근자","pathname":"/ts-for-jsdev/04-interface-and-class/class-advanced/accessors","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"04 인터페이스와 클래스"},{"label":"4.6 클래스 심화"}]},{"id":"-LCnxUyFTckGzVQIV69P","title":"4.6.4 추상 클래스","pathname":"/ts-for-jsdev/04-interface-and-class/class-advanced/abstract-classes","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"04 인터페이스와 클래스"},{"label":"4.6 클래스 심화"}]},{"id":"-LCdVwx5mta0XIuR13q2","title":"4.7 인터페이스와 클래스의 관계","pathname":"/ts-for-jsdev/04-interface-and-class/connecting-interface-and-class","siteSpaceId":"sitesp_mIY2K","description":"인터페이스와 클래스가 서로 어떤 방식으로 의존할 수 있는지에 대해 이야기한다.","breadcrumbs":[{"label":"04 인터페이스와 클래스"}]},{"id":"-LCdWN4uhmq3OQn_UPnd","title":"4.8 맺으며","pathname":"/ts-for-jsdev/04-interface-and-class/outro","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"04 인터페이스와 클래스"}]},{"id":"-LCnhE-9gOSeZyoNYeRW","title":"5.0 들어가며","pathname":"/ts-for-jsdev/05-type-compatibility/intro","siteSpaceId":"sitesp_mIY2K","description":"다양한 타입 간의 호환성(compatibility), 보다 구체적으로는 타입 간의 할당 가능성(assignability)에 대해 다루어 본다.","breadcrumbs":[{"label":"05 타입의 호환성"}]},{"id":"-LE333uRncMLGWRS_AEm","title":"5.1 기본 타입의 호환성","pathname":"/ts-for-jsdev/05-type-compatibility/primitive-types","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트가 기본 타입 간의 호환성을 판단하는 법에 대해 다룬다.","breadcrumbs":[{"label":"05 타입의 호환성"}]},{"id":"-LE33ujJKRqWYjhTzDJY","title":"5.2 객체 타입의 호환성","pathname":"/ts-for-jsdev/05-type-compatibility/objects","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트가 객체 타입 간의 호환성을 판단하는 법에 대해 다룬다.","breadcrumbs":[{"label":"05 타입의 호환성"}]},{"id":"-LE39Bjxpa9hIXsMRu7R","title":"5.3 함수 타입의 호환성","pathname":"/ts-for-jsdev/05-type-compatibility/functions","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트가 함수 타입 간의 호환성을 판단하는 법에 대해 다룬다.","breadcrumbs":[{"label":"05 타입의 호환성"}]},{"id":"-LE3DKTt5bPZau_nbEPS","title":"5.4 클래스의 호환성","pathname":"/ts-for-jsdev/05-type-compatibility/classes","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트가 클래스 간의 호환성을 판단하는 법에 대해 다룬다.","breadcrumbs":[{"label":"05 타입의 호환성"}]},{"id":"-LE3EJtbbJsMtdmsaQk8","title":"5.5 제너릭의 호환성","pathname":"/ts-for-jsdev/05-type-compatibility/generics","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트가 제너릭 타입 간의 호환성을 판단하는 법에 대해 다룬다.","breadcrumbs":[{"label":"05 타입의 호환성"}]},{"id":"-LE3JXYsiwQLARaUn3jw","title":"5.6 열거형의 호환성","pathname":"/ts-for-jsdev/05-type-compatibility/enums","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트가 열거형 간의 호환성을 판단하는 법에 대해 다룬다.","breadcrumbs":[{"label":"05 타입의 호환성"}]},{"id":"-LE3KqGx0PoAARTCLu9B","title":"5.7 맺으며","pathname":"/ts-for-jsdev/05-type-compatibility/outro","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"05 타입의 호환성"}]},{"id":"-LCnhIMqSm-1UN0UL6DR","title":"6.0 들어가며","pathname":"/ts-for-jsdev/06-type-system-deepdive/intro","siteSpaceId":"sitesp_mIY2K","description":"6장에서는 타입스크립트의 타입 시스템에 대해 심도있게 다룬다.","breadcrumbs":[{"label":"06 타입 시스템 심화"}]},{"id":"-LFHdcem0Nfj5dLUmh80","title":"6.1 타입 좁히기","pathname":"/ts-for-jsdev/06-type-system-deepdive/type-narrowing","siteSpaceId":"sitesp_mIY2K","description":"타입스크립트가 타입을 보다 좁은 타입으로 좁히는 다양한 상황에 대해 알아본다.","breadcrumbs":[{"label":"06 타입 시스템 심화"}]},{"id":"-LFHdiPqdrnsOazTiuce","title":"6.2 타입 추론","pathname":"/ts-for-jsdev/06-type-system-deepdive/type-inference","siteSpaceId":"sitesp_mIY2K","description":"컴파일러는 타입 추론을 통해 명시적인 타입 표기 없이도 타입 정보를 이해할 수 있다.","breadcrumbs":[{"label":"06 타입 시스템 심화"}]},{"id":"-LFHdkriJG8Pgc6OUDAO","title":"6.3 타입 단언","pathname":"/ts-for-jsdev/06-type-system-deepdive/type-assertion","siteSpaceId":"sitesp_mIY2K","description":"타입 단언을 통해 컴파일러에게 특정 타입 정보의 사용을 강제할 수 있다.","breadcrumbs":[{"label":"06 타입 시스템 심화"}]},{"id":"-LFHdmXWyYMIgM2eEjdm","title":"6.4 집합으로서의 타입","pathname":"/ts-for-jsdev/06-type-system-deepdive/types-as-sets","siteSpaceId":"sitesp_mIY2K","description":"프로그래밍의 타입이 수학의 집합과 공유하는 성질, 그리고 타입을 집합으로 바라보는 관점에 대해 배운다.","breadcrumbs":[{"label":"06 타입 시스템 심화"}]},{"id":"-LFHdpS8eFg-L_Q8JLki","title":"6.5 서로소 유니온 타입","pathname":"/ts-for-jsdev/06-type-system-deepdive/disjoint-union-type","siteSpaceId":"sitesp_mIY2K","description":"유니온 타입의 특수한 경우인 서로소 유니온 타입의 의미와 쓸모에 대해 다룬다.","breadcrumbs":[{"label":"06 타입 시스템 심화"}]},{"id":"-LFHduO07v49clTaoYhN","title":"6.6 맺으며","pathname":"/ts-for-jsdev/06-type-system-deepdive/outro","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"06 타입 시스템 심화"}]},{"id":"-LCnhYhVG99ImhgzNFHo","title":"들어가며 (7월 2일 공개)","pathname":"/ts-for-jsdev/07-advanced-types/intro","siteSpaceId":"sitesp_mIY2K","description":"7월 2일 공개 예정.","breadcrumbs":[{"label":"07 고급 타입"}]},{"id":"-LCnhfSpgw_iXd3pWr5l","title":"들어가며 (7월 16일 공개)","pathname":"/ts-for-jsdev/08-modules-and-namespaces/intro","siteSpaceId":"sitesp_mIY2K","description":"7월 16일 공개 예정.","breadcrumbs":[{"label":"08 모듈과 네임스페이스"}]},{"id":"-LCnhmAeFbMGixdhYtq4","title":"들어가며 (7월 30일 공개)","pathname":"/ts-for-jsdev/09-real-world-projects/intro","siteSpaceId":"sitesp_mIY2K","description":"7월 30일 공개 예정.","breadcrumbs":[{"label":"09 실제 프로젝트에서 사용하기"}]},{"id":"-LCnhrvDcvMScgXSmNUf","title":"들어가며 (8월 13일 공개)","pathname":"/ts-for-jsdev/10-libraries/intro","siteSpaceId":"sitesp_mIY2K","description":"8월 13일 공개 예정.","breadcrumbs":[{"label":"10 유용한 라이브러리 소개"}]},{"id":"-LCqP1Y7iEyd8V8gyBgi","title":"맺으며","pathname":"/ts-for-jsdev/10-libraries/outro","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"10 유용한 라이브러리 소개"}]},{"id":"-LCighaY9CPVf3WH38is","title":"ECMAScript 언어 표준과 TC39","pathname":"/ts-for-jsdev/appendix-ii-js-ecosystem/ecmascript-tc39","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"부록 II : 자바스크립트 언어 생태계"}]},{"id":"-LCsWmAXmO7EiyLXl-2o","title":"TC39 프로세스","pathname":"/ts-for-jsdev/appendix-ii-js-ecosystem/tc39-process","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"부록 II : 자바스크립트 언어 생태계"}]},{"id":"-LCsWmAYMPA57aqGRDK9","title":"실제 예시 - Array.prototype.includes","pathname":"/ts-for-jsdev/appendix-ii-js-ecosystem/example-array.prototype.includes","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"부록 II : 자바스크립트 언어 생태계"}]},{"id":"-LCsWmAZ1478s6-ZHYH5","title":"타입스크립트와 ECMAScript","pathname":"/ts-for-jsdev/appendix-ii-js-ecosystem/typescript-and-ecmascript","siteSpaceId":"sitesp_mIY2K","description":"","breadcrumbs":[{"label":"부록 II : 자바스크립트 언어 생태계"}]}]}