TypeScript 환경 설정 및 테스트

2016.05.15 12:36

졸리운_곰 조회 수:134

 

 

TypeScript 환경 설정 및 테스트

마이크로소프트에서 TypeScript를 개발했습니다.
구글의 Dart를 견제하는 차원에서 나온건지 웹 개발을 정말 제대로 지원하고 싶어서 나온건지는 아직 알 수 없지만 구글과 마소에서 관심 갖는 분야라면 우리도 빠르게 접근해야 할 것입니다.

TypeScript(TS)는 JavaScript(JS)의 수퍼셋이므로 모든 JS는 TS에서 사용 가능합니다.

결국 JS이므로 아래 URL에서 간단하게 스크립트 테스트를 할 수 있습니다.
http://www.typescriptlang.org/Playground/

이제 각자 PC에 개발 환경을 세팅하고 테스트 해보겠습니다.
차근차근 따라하면서 정리해 보세요.

개발 환경 세팅 ::
1) Node.js 설치 (http://www.nodejs.org)
2) cmd.exe 실행 (윈도우 시작 버튼 -> 실행 -> ‘cmd’ 입력 또는 보조프로그램 -> 명령 프롬프트)
3) npm install -g typescript 입력
4) 앞으로 tsc 파일명.ts 하면 컴파일 됨

이제 Hello World를 빠르게 진행해 보죠.

1. 텍스트 에디터로 HelloWorld.ts 작성

1
alert("Hello World");

2. 명령 프롬프트에서 컴파일
tsc HelloWorld.ts 입력
컴파일 후 HelloWorld.js 생성되면 성공

3. 테스트 html 작성

1
<script type="text/javascript" src="HelloWorld.js"></script>

4. html 실행
‘Hello World’ 알림창이 뜨면 성공

위와 같이 환경 설정 및 개발이 간단합니다.

그럼 이제 TS만의 특징을 살펴보겠습니다.

1. 변수 :: 타입 정의가 가능합니다.

1
var str:string;

2. 함수

1
2
3
4
function foo(str:string):string
{
     return str;
}

3. 클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MyString
{
     str:string;
     constructor(str:string)
     {
          this.str = str;
     }
     getString():string
     {
          return this.str;
     }
}

var myString:MyString = new MyString("abc");
alert(myString.getString());

4. 모듈 :: 클래스에 export 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
module MyModule
{
     export class MyString
     {
          str:string;
          constructor(str:string)
          {
               this.str = str;
          }
          getString():string
          {
               return this.str;
          }
     }
     
     export class MyNumber
     {
          num:number;
         
          constructor(num:number)
          {
               this.num = num;
               this.getNumber = () => this.num;
          }
         
          getNumber:() => number;
     }
}

import MyString2 = MyModule.MyString;
import MyNumber2 = MyModule.MyNumber;

var myString:MyString2 = new MyString2("abc");
alert(myString.getString());

var myNumber:MyNumber2 = new MyNumber2(12);
alert(myNumber.getNumber());

5. 인터페이스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
module MyModule
{
     export interface IMy
     {
          get();
     }
     export class MyString implements IMy
     {
          str:string;
          constructor(str:string)
          {
               this.str = str;
          }
          get():string
          {
               return this.str;
          }
     }
     
     export class MyNumber implements IMy
     {
          num:number;
         
          constructor(num:number)
          {
               this.num = num;
               this.get = () => this.num;
          }
         
          get:() => number;
     }
}

var myObj:MyModule.IMy;
myObj = new MyModule.MyString("abc");
alert(myObj.get());

myObj = new MyModule.MyNumber(12);
alert(myObj.get());

이번에는 외부 파일을 참조하는 경우에 대해 알아보겠습니다.

1. MyModule.ts 를 아래와 같이 작성합니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module MyModule
{
     export class MyString
     {
          str:string;
          constructor(str:string)
          {
               this.str = str;
          }
          getString():string
          {
               return this.str;
          }
     }
     
     export class MyNumber
     {
          num:number;
         
          constructor(num:number)
          {
               this.num = num;
               this.getNumber = () => this.num;
          }
         
          getNumber:() => number;
     }
}

2. Main.ts를 아래와 같이 작성합니다.

1
2
3
4
5
6
7
///<reference path="./MyModule.ts"/>

var myString:MyModule.MyString = new MyModule.MyString("abc");
alert(myString.getString());

var myNumber:MyModule.MyNumber = new MyModule.MyNumber(12);
alert(myNumber.getNumber());

3. 명령 프롬프트에서 컴파일 하는데 위에서 한 것과 조금 다릅니다. 앞으로는 아래 방법으로 항상 하셔도 됩니다.
tsc Main.ts –out out.js –module “amd” 입력
컴파일 후 out.js 생성되면 성공

4. 테스트 html의 src를 out.js로 수정하여 실행

<옵션>
–out out.js :: 모든 스크립트를 out.js에 포함
–module “amd” :: 사용할 모듈 타입 지정 (amd, commonjs)

amd: 브라우저용, RequireJS 사용
commonjs: 서버용, Node.js 사용

Main.ts에 보면 /// 코드가 있는데 이건 MyModule.ts에 ‘module MyModule’처럼 사용하여 파일을 하나로 만들 때 사용합니다.

그럼 RequireJS를 사용한다고 하였으니 js를 따로 관리할 수 있겠죠? 조금 수정합니다.

1. MyModule.ts 를 아래와 같이 수정합니다. 주석만 넣었습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//module MyModule
//{
     export class MyString
     {
          str:string;
          constructor(str:string)
          {
               this.str = str;
          }
          getString():string
          {
               return this.str;
          }
     }
     
     export class MyNumber
     {
          num:number;
         
          constructor(num:number)
          {
               this.num = num;
               this.getNumber = () => this.num;
          }
         
          getNumber:() => number;
     }
//}

2. Main.ts를 아래와 같이 작성합니다.

1
2
3
4
5
6
7
import MyModule = require("./MyModule");

var myString:MyModule.MyString = new MyModule.MyString("abc");
alert(myString.getString());

var myNumber:MyModule.MyNumber = new MyModule.MyNumber(12);
alert(myNumber.getNumber());

3. 명령 프롬프트에서 컴파일 합니다. –out은 없습니다. 파일을 하나로 합치지 않으니까요.
tsc Main.ts –module “amd” 입력
컴파일 후 Main.js, MyModule.js 생성되면 성공

4. 테스트 html을 수정하고 실행합니다. require.js 파일이 없는 분은 http://requirejs.org/docs/download.html 에서 다운로드 하세요.

1
<script type="text/javascript" src="require.js" data-main="Main.js"></script>

CommonJS도 해보겠습니다.

1. node.js에는 alert가 없으므로 console.log로 변경합니다.
alert(myString.getString()); -> console.log(myString.getString());

2. –module “commonjs”로 바꾸고 실행합니다.
3. 곧바로 node Main.js 를 입력하고 엔터.

이상입니다. (-:

 

 

[출처] https://blog.wonhada.com/?p=296

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1220 [一日30分 인생승리의 학습법] Qiskit 시작하기 (Getting Started with Qiskit) file 졸리운_곰 2025.06.03 13
1219 [一日30分 인생승리의 학습법] 양자컴퓨팅 프로그래밍 file 졸리운_곰 2025.06.03 8
1218 [一日30分 인생승리의 학습법] [Git] 다중 리모트를 사용하여 여러 Git 연동하기(Gitea, GitHub) file 졸리운_곰 2025.05.25 5
1217 [一日30分 인생승리의 학습법] [GitHub][terminal] 비밀번호 인증 에러를 토큰으로 해결하고 로그인 하기 file 졸리운_곰 2025.05.24 5
1216 [一日30分 인생승리의 학습법] [알아봅시다] 블록체인 게임들의 가능성과 미래 file 졸리운_곰 2025.04.08 26
1215 이 어지러운시대의 극복법 만화보기 file unmask 2025.04.08 52
1214 [ 一日30分 인생승리의 학습법] IT 국비교육, 쓰레기 속에서 그나마 덜 쓰레기인 곳 찾는 팁 file 졸리운_곰 2025.03.08 19
1213 [ 一日30分 인생승리의 학습법] 소프트웨어 개발하다보면 "connection reset" 등, 소프트웨어 버그 적인 문제가아닌 하드웨어나 네트워크 오류 메시지의 예 file 졸리운_곰 2025.03.01 19
1212 [ 一日30分 인생승리의 학습법] 기술부채(Technical Debt)는 소프트웨어 개발이나 프로젝트 과정에서, 약속된 것과 실제로 제공된 것 사이에 차이가 발생하는 것을 의미합니다. file 졸리운_곰 2025.01.23 29
1211 [ 一日30分 인생승리의 학습법] 고가용성(High Availability) 시스템을 위한 5가지 전략 file 졸리운_곰 2024.12.28 31
1210 [ 一日30分 인생승리의 학습법] 켈리 공식을 간단히 투자해 적용해 보자 - 켈리 크라이티리언과 확률적 사고의 중요성 file 졸리운_곰 2024.12.26 33
1209 [ 一日30分 인생승리의 학습법] [markdown] mermaid를 이용해서 UML 그리기 - 플로우차트 file 졸리운_곰 2024.12.01 47
1208 [ 一日30分 인생승리의 학습법] Mermaid.js 정리???????? file 졸리운_곰 2024.12.01 66
1207 [ 一日30分 인생승리의 학습법] Mermaid를 이용한 시퀀스 다이어그램 file 졸리운_곰 2024.12.01 33
1206 [ 一日30分 인생승리의 학습법] Mermaid - 코드로 순서도(flowchart) 그리기 file 졸리운_곰 2024.12.01 27
1205 [ 一日30分 인생승리의 학습법] 유니코드 그래픽 기호(심벌) Huge List of Unicode Symbols 졸리운_곰 2024.07.31 46
1204 [ 一日30分 인생승리의 학습법] PocketBase Attempt to simplify the serve command for prod : 포켓베이스 프로덕션 포트 도메인 네임 설정 졸리운_곰 2024.06.10 73
1203 [ 一日30分 인생승리의 학습법] google spreadsheet app script 로 코인 현황 : 거래소 API 접근할 때 알아두면 좋은 함수 file 졸리운_곰 2024.06.08 60
1202 [ 一日30分 인생승리의 학습법] 매크로 프로그램 정리 졸리운_곰 2024.06.08 88
1201 [ 一日30分 인생승리의 학습법] 스마트스토어 vs 아임웹 vs 카페24 file 졸리운_곰 2024.05.16 77
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED