2014년 5월 29일 목요일

TypeScript 특징

HTML5 Game Engine을 조사하던 차에 Turbulenz라는 곳에서
TypeScript를 사용해서 엔진을 개발했다고 해서 한번 찾아보게 되었음.
TypeScript는 Microsoft에서 개발 되어 공개되었고 type checking이 추가된 JavaScript의 superset이라 기존 JavaScript에 익숙하면 전이하기는 쉽고 TypeScript를 컴파일?한 결과물은 Javascript이므로 기존 Browser가 변경될 필요가 없다는게 특징이다.
OOP 개념을 가진 JavaScript 초보들에게는 좋을 수도....

다만 JavaScript의 subset이어서 기본 JavaScript library들을 사용하고자 할 경우 별도의 definition이 필요하다..

아래는 MS에서 공개한 TypeScript의 resource들이며
그 중 Tutorial을 먼저 보되 Simple Guide를 함께 보는게 편하겠음.
Specification은 120페이지라 필요할 때 보면 되고....


TypeScript
 : http://www.typescriptlang.org/
 : http://typescript.codeplex.com/

Simple Guide : http://www.typescriptlang.org/Handbook
Tutorial : http://www.typescriptlang.org/Tutorial
Language specification : http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf

: TypeScript sample code

class Student {
    fullname : string;
    constructor(public firstname, public middleinitial, public lastname) {
        this.fullname = firstname + " " + middleinitial + " " + lastname;
    }
}

interface Person {
    firstname: string;
    lastname: string;
}

function greeter(person : Person) {
    return "Hello, " + person.firstname + " " + person.lastname;
}

var user = new Student("Jane", "M.", "User");

document.body.innerHTML = greeter(user);

[Type Script 특징]

보다보니 Simple Guide 중에서 아래와 같은 문구가 있음.

One of TypeScript's core principles is that type-checking focuses on the 'shape' that values have. This is sometimes called "duck typing" or "structural subtyping". In TypeScript, interfaces fill the role of naming these types, and are a powerful way of defining contracts within your code as well as contracts with code outside of your project. 

TypeScript의 기본 원칙들 중 하나가 변수가 가진 값의 형태에 따라 type-checking을 하는 것이고 이를 duck typing, structural subtyping이라고 한다. 라고 하고 있어 근본적으로 JavaScript와 다른 점을 알 수 있음.


[TypeScript: First Impressions]
: http://tirania.org/blog/archive/2012/Oct-01.html

위에서 Miguel de Icaza께서 TypeScript에 대해서 정리한 글임. pros, cons를 통해서 특징을 살펴 볼 수 있음.
간단히 보면 쉽게 배울 수 있고 type checking으로 통한 장점을 수용할 수 있고 컴파일 결과물은 JavaScript 코드 이므로 기존 browser나 runtime을 변경할 필요가 없음. 다만 개발환경이 VisualStudio에 국한된 것은 단점 임.

 - Pros
  : Javascript의 superset으로 기존 쉽게 전이할 수 있음.
  : Apache License로 Open Source
  : Code deploy전 type assist와 error 확인이 가능
  : Extensive type inference을 통해 type checking의 장점과 함께 JavaScript의 dynamism의 지킬 수 있음.
  : Classes, interfaces의 사용과 visibility 향상
  : explicit construct의 사용의 장점 (장점을 Nice syntactic sugar reduces boilerplate code 라 표현함)
  : TypeScript는 Node.JS pacakage로서 배포되므로 Linux, MacOS에서도 설치 가능
  : TypeScript는 compile time이나 server side에 적용되므로 code 실행을 위해 기존 browser나 runtime이 수정될 필요는 없음.

 - Cons
  : 사실상 Web은 Unix 기반이다.
  : 대부분 개발자들은 MacOS, Linux 상에서 code를 작성하고 Linux server로 deploy한다.
    그러므로 위에서 말한 type checking의 장점 주는 적절한 tool은 현재 Visual Studio Professional만 존재하므로 Windows외 환경에서는 이점을 누릴 수 없음.


그외 Google Dart team member가 작성한 자세한 정리글이 있는데 reddit은 너무 보기 지겹다.. ㅜㅜ
http://www.reddit.com/r/programming/comments/10rkd9/welcome_to_typescript/

그리고 TypeScript introduction video의 답글을 보면 꽤나 부정적임.. ㅎㅎㅎ
http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript


[TypeScript개발을 위해 필요한 것들]

[Compiler]

Visual Studio 2012용 설치 파일이 있어 설치하면 editor, compiler가 설치된다.
그외에는 Node.js package maanger를 통해서 설치할 수 있다고 하는데 안해봤음.

그리고 Visual Studio 2013 Update 2가 설치되어 있다면 기본으로 깔려 있으나
재미있는건 Visual Studio 2013 Update 2가 아니라면
아래 링크의 TypeScript 1.0 Tools를 설치해도 VS2013에서는 메뉴가 나타나지 않는다.

TypeScript 1.0 Tools for Visual Studio 2012
: http://visualstudiogallery.msdn.microsoft.com/fa041d2d-5d77-494b-b0ba-8b4550792b4d
: http://www.microsoft.com/en-us/download/details.aspx?id=34790

[Editors]
- Visual Studio 2012, 2013
- Vi, Emacs
 : http://msopentech.com/blog/2012/10/01/sublime-text-vi-emacs-typescript-enabled/

댓글 없음:

댓글 쓰기