SlideShare a Scribd company logo
박용준 MVP / 데브렉(http://devlec.com)
JavaScript에게 형(Type)이 생겼어요. TypeScript
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
JavaScript
TypeScript
*.ts TSC
컴파일러
*.js에디터
(VSC)
.d.ts
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
JS JSTS
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
var conf: string = "TechDays 2015";
Declare it
Name it
Annotate it
Type it
Set it
Type Annotations
더 이상의 슬라이드가 없음
(참고) 데모시 사용한 코드 조각
• var msg: string = "TechDays 2015";
• class Car {
• public name: string;
• }
• var car = new Car();
• car.name = "TechCar";
(참고) 데모시 사용한 코드 조각
• class Point
• {
• x: number;
• y: number;
• private color: string;
• constructor(x: number, y: number) {
• this.x = x;
• this.y = y;
• this.color = "red";
• }
• dist() { return Math.sqrt(this.x * this.x + this.y + this.y); }
• static oright = new Point(0, 0);
• }
• class Point3D extends Point {
• constructor(x: number, y: number, public z: number) {
• super(x, y);
• }
• }
• module Utils {
• export class Point {
• }
• }
(참고) 데모시 사용한 코드 조각
• {
• "compilerOptions": {
• "target": "ES5",
• "module": "commonjs"
• },
• "files": [
• "server.ts", "client.ts"
• ]
• }
• /// <reference path="./typings/node/node.d.ts" />
• import { createServer } from "http";
• export function simpleServer(port:number, message: string) {
• createServer((req, res) => {
• res.writeHead(200, { "Content-Type": "text/html" });
• res.write("<h1>" + message + "</h1>");
• res.end();
• }).listen(port);
• }
• import { simpleServer } from "./server";
• simpleServer(1337, "Hello TypeScript...");
• console.log("Listening on 1337...");
(참고) 데모시 사용한 코드 조각
• type NameOrNameArray = string | string[];
• function printNames(
• name: NameOrNameArray, age: number = 20, ...email: string[]): string {
• var n: string;
• if (typeof name === "string") {
• n = name;
• }
• else {
• n = name.join(" ");
• }
• return `name: ${n}, age: ${age}, emails: ${email.join(', ') }`;
• }
• var r = printNames(["Red", "Plus"], 21, "a@a.com", "b@b.com", "c@c.com");
• document.write(r);
(참고) 데모시 사용한 코드 조각
• interface Entity {
• name: string;
• }
• var products = [
• { name: "Apple", price: 150, id: 1 }, { name: "Orange", price: 100, id: 2 }, { name: "Mango", price: 250, id: 3 }
• ];
• function sortByName<T extends Entity>(a: T[]) {
• var result = a.slice(0);
• result.sort(function (x, y) {
• var name = "red";
• return x.name.localeCompare(y.name);
• });
• return result;
• }
• function sortBy<T>(a: T[], keyOf: (item: T) => any): T[] {
• var result = a.slice(0);
• result.sort(function (x, y) {
• var kx = keyOf(x);
• var ky = keyOf(y);
• return kx > ky ? 1 : kx < ky ? -1 : 0;
• });
• return result;
• }
• var sorted = sortByName(products);
• document.body.innerText = JSON.stringify(sorted, null, 4);
http://docs.com/redplus
TypeScript 관련 추가 정보는
아래 링크를 참고해 주세요.
http://aka.ms/td2015_again
TechDays Korea 2015에서 놓치신 세션은
Microsoft 기술 동영상 커뮤니티 Channel 9에서
추후에 다시 보실 수 있습니다.
감사합니다.
• MSDN Forum http://aka.ms/msdnforum
• TechNet Forum http://aka.ms/technetforum
http://aka.ms/td2015_again
TechDays Korea 2015에서 놓치신 세션은
Microsoft 기술 동영상 커뮤니티 Channel 9에서
추후에 다시 보실 수 있습니다.

More Related Content

What's hot (9)

[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart
neuroassociates
 
Es2015 Simple Overview
Es2015 Simple Overview
Kim Hunmin
 
Python 스터디
Python 스터디
sanghyuck Na
 
하스켈 프로그래밍 입문 2
하스켈 프로그래밍 입문 2
Kwang Yul Seo
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)
NAVER D2
 
11. array & pointer
11. array & pointer
웅식 전
 
하스켈 모나드
하스켈 모나드
Kwang Yul Seo
 
배워봅시다 머신러닝 with TensorFlow
배워봅시다 머신러닝 with TensorFlow
Jang Hoon
 
[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart
neuroassociates
 
Es2015 Simple Overview
Es2015 Simple Overview
Kim Hunmin
 
하스켈 프로그래밍 입문 2
하스켈 프로그래밍 입문 2
Kwang Yul Seo
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)
NAVER D2
 
11. array & pointer
11. array & pointer
웅식 전
 
하스켈 모나드
하스켈 모나드
Kwang Yul Seo
 
배워봅시다 머신러닝 with TensorFlow
배워봅시다 머신러닝 with TensorFlow
Jang Hoon
 

Similar to [Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준) (20)

Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트
Jin wook
 
타입스크립트 잘 사용하기
타입스크립트 잘 사용하기
SanghoYun
 
07. type system
07. type system
Han JaeYeab
 
Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
Dong Jun Kwon
 
Use JavaScript more strictly (feat. TypeScript, flow)
Use JavaScript more strictly (feat. TypeScript, flow)
Mark Lee
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
NAVER D2
 
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
정석 양
 
01. basic types
01. basic types
Han JaeYeab
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
Young-Beom Rhee
 
Why javaScript?
Why javaScript?
Kim Hunmin
 
Angular2를 활용한 컴포넌트 중심의 개발
Angular2를 활용한 컴포넌트 중심의 개발
Jin wook
 
JavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and Constructors
Hyuncheol Jeon
 
Javascript
Javascript
Hong Hyo Sang
 
EcmaScript6(2015) Overview
EcmaScript6(2015) Overview
yongwoo Jeon
 
[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
코드잇-타스-특강.pdf
코드잇-타스-특강.pdf
이정환
 
04. interface in typescript
04. interface in typescript
Han JaeYeab
 
[부스트캠프 Tech Talk]조찬영_타입스크립트없인 코딩할 수 없는 몸이 되버렸어
[부스트캠프 Tech Talk]조찬영_타입스크립트없인 코딩할 수 없는 몸이 되버렸어
CONNECT FOUNDATION
 
자바스크립트 패턴 3장
자바스크립트 패턴 3장
Software in Life
 
Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트
Jin wook
 
타입스크립트 잘 사용하기
타입스크립트 잘 사용하기
SanghoYun
 
Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
Dong Jun Kwon
 
Use JavaScript more strictly (feat. TypeScript, flow)
Use JavaScript more strictly (feat. TypeScript, flow)
Mark Lee
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
NAVER D2
 
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
정석 양
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
Young-Beom Rhee
 
Why javaScript?
Why javaScript?
Kim Hunmin
 
Angular2를 활용한 컴포넌트 중심의 개발
Angular2를 활용한 컴포넌트 중심의 개발
Jin wook
 
JavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and Constructors
Hyuncheol Jeon
 
EcmaScript6(2015) Overview
EcmaScript6(2015) Overview
yongwoo Jeon
 
[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼#2] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
코드잇-타스-특강.pdf
코드잇-타스-특강.pdf
이정환
 
04. interface in typescript
04. interface in typescript
Han JaeYeab
 
[부스트캠프 Tech Talk]조찬영_타입스크립트없인 코딩할 수 없는 몸이 되버렸어
[부스트캠프 Tech Talk]조찬영_타입스크립트없인 코딩할 수 없는 몸이 되버렸어
CONNECT FOUNDATION
 
자바스크립트 패턴 3장
자바스크립트 패턴 3장
Software in Life
 
Ad

More from Sang Don Kim (20)

[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
Sang Don Kim
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
Sang Don Kim
 
[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)
Sang Don Kim
 
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
Sang Don Kim
 
[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)
Sang Don Kim
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
Sang Don Kim
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
Sang Don Kim
 
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
Sang Don Kim
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
Sang Don Kim
 
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
Sang Don Kim
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
Sang Don Kim
 
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
Sang Don Kim
 
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
Sang Don Kim
 
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
Sang Don Kim
 
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
Sang Don Kim
 
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
Sang Don Kim
 
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
Sang Don Kim
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
Sang Don Kim
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
Sang Don Kim
 
[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
Sang Don Kim
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
Sang Don Kim
 
[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)
Sang Don Kim
 
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
Sang Don Kim
 
[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)
Sang Don Kim
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
Sang Don Kim
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
Sang Don Kim
 
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
Sang Don Kim
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
Sang Don Kim
 
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
Sang Don Kim
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
Sang Don Kim
 
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
Sang Don Kim
 
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
Sang Don Kim
 
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
Sang Don Kim
 
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
Sang Don Kim
 
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
Sang Don Kim
 
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
Sang Don Kim
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
Sang Don Kim
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
Sang Don Kim
 
Ad

[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)

  • 1. 박용준 MVP / 데브렉(http://devlec.com) JavaScript에게 형(Type)이 생겼어요. TypeScript
  • 13. var conf: string = "TechDays 2015"; Declare it Name it Annotate it Type it Set it Type Annotations
  • 15. (참고) 데모시 사용한 코드 조각 • var msg: string = "TechDays 2015"; • class Car { • public name: string; • } • var car = new Car(); • car.name = "TechCar";
  • 16. (참고) 데모시 사용한 코드 조각 • class Point • { • x: number; • y: number; • private color: string; • constructor(x: number, y: number) { • this.x = x; • this.y = y; • this.color = "red"; • } • dist() { return Math.sqrt(this.x * this.x + this.y + this.y); } • static oright = new Point(0, 0); • } • class Point3D extends Point { • constructor(x: number, y: number, public z: number) { • super(x, y); • } • } • module Utils { • export class Point { • } • }
  • 17. (참고) 데모시 사용한 코드 조각 • { • "compilerOptions": { • "target": "ES5", • "module": "commonjs" • }, • "files": [ • "server.ts", "client.ts" • ] • } • /// <reference path="./typings/node/node.d.ts" /> • import { createServer } from "http"; • export function simpleServer(port:number, message: string) { • createServer((req, res) => { • res.writeHead(200, { "Content-Type": "text/html" }); • res.write("<h1>" + message + "</h1>"); • res.end(); • }).listen(port); • } • import { simpleServer } from "./server"; • simpleServer(1337, "Hello TypeScript..."); • console.log("Listening on 1337...");
  • 18. (참고) 데모시 사용한 코드 조각 • type NameOrNameArray = string | string[]; • function printNames( • name: NameOrNameArray, age: number = 20, ...email: string[]): string { • var n: string; • if (typeof name === "string") { • n = name; • } • else { • n = name.join(" "); • } • return `name: ${n}, age: ${age}, emails: ${email.join(', ') }`; • } • var r = printNames(["Red", "Plus"], 21, "[email protected]", "[email protected]", "[email protected]"); • document.write(r);
  • 19. (참고) 데모시 사용한 코드 조각 • interface Entity { • name: string; • } • var products = [ • { name: "Apple", price: 150, id: 1 }, { name: "Orange", price: 100, id: 2 }, { name: "Mango", price: 250, id: 3 } • ]; • function sortByName<T extends Entity>(a: T[]) { • var result = a.slice(0); • result.sort(function (x, y) { • var name = "red"; • return x.name.localeCompare(y.name); • }); • return result; • } • function sortBy<T>(a: T[], keyOf: (item: T) => any): T[] { • var result = a.slice(0); • result.sort(function (x, y) { • var kx = keyOf(x); • var ky = keyOf(y); • return kx > ky ? 1 : kx < ky ? -1 : 0; • }); • return result; • } • var sorted = sortByName(products); • document.body.innerText = JSON.stringify(sorted, null, 4);
  • 20. http://docs.com/redplus TypeScript 관련 추가 정보는 아래 링크를 참고해 주세요.
  • 21. http://aka.ms/td2015_again TechDays Korea 2015에서 놓치신 세션은 Microsoft 기술 동영상 커뮤니티 Channel 9에서 추후에 다시 보실 수 있습니다.
  • 22. 감사합니다. • MSDN Forum http://aka.ms/msdnforum • TechNet Forum http://aka.ms/technetforum
  • 23. http://aka.ms/td2015_again TechDays Korea 2015에서 놓치신 세션은 Microsoft 기술 동영상 커뮤니티 Channel 9에서 추후에 다시 보실 수 있습니다.