반응형

jinja2와 vuejs 혼용하여 사용하기

배경

내용이 그리 많지는 않다. vuejs 와 jinja2에서 '{{', '}}'해당 기호 용도가 중복이 된다. 때문에 같이 혼용하기 위해서는 해당 기호를 바꿔야 한다.

다행스럽게도 vuejs의 경우 JavaScript 기반이다 보니 문법을 parsing 하는 delimiters 를 변경할 수 있다.

vuejs 기호 변경

<!-- jinja2 -->
<div id="app">
    {% set val = hello -%}
    <span>[[ {{ val }} ]]</span>
</div>
// javascript
let app = new Vue({
    el: "#app",
    data: {
        hello: "world"
    },
    delimiters: ['[[', ']]']
});

참조

  • 추후 다시 찾게 되면 추가 예정
반응형
반응형

jinja2 에서 javascript로 값 넘기기

배경

주로 웹 개발보다 기능을 개발해서 API 형식으로 구현을 하다보니 Django 보다는 Flask가 적합하다고 생각하고 사용중에 또 다시 인력 부족으로 웹페이지를 만들던 중 jinja2 에서 javascript로 데이터를 넘겨야 하는 경우가 발생해서 기록으로 남긴다.

유용한 경우

해당 기능은 ajax 통신 이전 초기에 웹 페이지가 새로로드 할때마다 초기화 해야하는 데이터가 바뀌어야 하는 경우에 사용하면 유용하다.

예를 들어 로그인된 사람마다 대시보드에 처음 표시되는 데이터를 전달하는 경우.

Flask(python3) -> Jinja2 -> javascript

원리는 Flask에서 Jinja2 템플릿을 html 문서로 만든다음에 Client에 전성한 다음에 javascript가 로드되는 순서로 동작된다는 것을 이용한 것이다. 더군다나 json은 문자기반 데이터이기 때문에 이것이 가능하다.
즉 Flask에서 데이터를 Jinja2를 통해서 문자형태로 전달 가능하다. 그럼 json을 Jinja2를 통해 작성하면 충분히 전달이 가능하다.

#Flask
import json

@app.route("/")
def index():
    data = { "a" : "b" }
    return render_templete("index.html", data=json.dumps(data, ensure_ascii=False))
<!-- jinja -->
<script>
    let initdata = JSON.parse( {{ data | safe }} );
</script>

이제 jinja2로 삽입된 위의 script 태그 이후에 받아서 사용하거나 모두 페이지로드 뒤에 해당 데이터를 사용하도록 작성하면 된다.

참조

https://stackoverflow.com/questions/15321431/how-to-pass-a-list-from-python-by-jinja2-to-javascript/22157700

 

How to pass a list from Python, by Jinja2 to JavaScript

Let's say I have a Python variable: list_of_items = ['1','2','3','4','5'] and I pass it to Jinja by rendering HTML, and I also have a function in JavaScript called somefunction(variable). I am tr...

stackoverflow.com

 

반응형
반응형

bootstrap 4 datetimepicker(Tempus Dominus)

배경

어쩌다 보니 4년만에 웹 개발관련된 업무를 하게 되었다. 요즘 트렌드는 어떤지 모르겠지만, 라이브러리는 과거 보다 확실이 다양해졌다. 일단 리서치 했을 때 국내에서는 Bootstrap 이 인기 있는 것 같아서 간단히 적용을 하던 중 bootstrap에서는 datetimepicker에 대한 지원이 없어서 이를 보강해주는 보조(?) 라이브러리가 있었다.

설치 방법

웹 분야가 늘 그렇듯이 html 문서에 script 항목에 추가를 시켜주면 된다. 다만, 설명에는 CDN 주소만 있고, 정작 다운로드 주소 없이 경로를 넣어주면 된다고 설명되어 있다.

AngularJS나 Django의 경우 설치를 하면 간단하나, 필자는 Flask를 사용하고 있기 때문에 따로 다운로드를 받아야 한다.

공식 페이지 주소를 보면 알 수 있듯이 github 에 있다. 즉, 레포지토리에 가서 dist 혹은 build 또는 min 으로 된 폴더에 있는 것을 다운로드 받으면 해결된다. 의존 라이브러리인 moment 라이브러리 링크도 아래에 추가한다.

참조

반응형
반응형

TypeScript 기초: 기본 타입(Basic Type)

타입스크립트(TS: TypeScript)에서는 기본적으로 제공하는 타입이 존재 한다. 하지만, 항상 염두를 해야 하는 것이 최종적으로 빌드 되었을때는 자바스크립트(JS: JavaScript)가 됨을 잊지 말아야 한다.

* 이 글 작성할 당시의 TypeScript는 2.0 이 발표된지 얼마 안된 시점이다. 즉, JS 와 TS 가 2016년 으로터 많은 시간이 지났다면 맞지 않는 글이다. 대신 과거에 이러했구나 정도로 보면 될 것 같다.

 

기본 타입

JS에서 제공되는 기본 타입과 같은 타입

 

1. undefined

2. null

3. number

4. string

5. boolean

 

undefined 와 null은 JS에서 내부적으로 구분이 되기 때문에 역시 타입으로 정의가 가능하다. 주의해야 할 점은 이러한 기본타입은 변수 선언시 초기값이 주어질 경우 굳이 타입을 정의 하지 않아도 된다.

 

확장된 타입

TS에서 등장한 타입이다. 다만, 지금도 업데이트가 꾸준히 되고 있는 언어이기 때문에 필요에 따라서 새로운 타입이 추가될 가능성이 없는 건 아니다.

 

1. Tuple

2. enum

3. any

4. never

 

Tuple

JS에서는 기본적으로 제공되는 타입이 아니다. 대신 Array를 이용해서 간접적으로 구현을 타입스크립트에서는 이를 타입으로 만들어서 정형화를 시켜주는 것이다. 사용방법은 다음과 같다.

예시)

var foo: [string, number];
foo = [5, "hello"]    // error
foo = ["hello", 5]    // no error 

 

여기서 타입스크립트의 역할은 해당 변수의 튜플의 순서에 대한 문법검사를 해준다는 것을 알 수 있다. 이 문법은 자바스크립트에서는 에러가 나지 않는다는 점을 기억하자.

 

enum

컴파일러형 언어(C, C++, JAVA, C# 등)에 있는 enum과 동일한 역할을 한다. 선언된 키워드는 따로 정의 하지 않는다면, 선언된 순서대로 0부터 1씩 커진다. 만약 첫 번째 선언된 키워드에 숫자를 정의 하면, 이후 키워드는 강제로 선언된 키워드의 숫자에서 부터 1씩 커진다. 사용방법은 다음과 같다.

예시)

enum NUM{ one = 1, two, three };
var flag = NUM.two
switch(flag)
{
    // ...
    case NUM.two:    // execute this line
    // ...
    break;
    // ...
}

 

enum으로 호출된 값들은 실제 number형을 갖고 있다. 그리고 자바스크립트로 이러한 형태를 구현을 해주는 것을 타입스크립트의 컴파일러가 코드를 작성을 해준다. 어떻게 코드가 작성되는지 확인하고 싶다면, 타입스크립트 공식 홈페이지의 PlayGround에서 임으로 작성하여 확인을 해봐도 된다.

 

any

JS에서는 변수를 선언할때 모든 값을 참조하게 할 수 있다. 타입스크립트에서는 자바스크립트에서 내부적으로 갖고 있는 타입을 명시 해주면서 타입검사를 할 수 있다. 하자만, 웹 개발 환경의 경우 종종 어떤 타입이 오는지 알지 못하는 상태에서 개발을 해야 하는 경우가 있다. 이러한 유연성을 위해서 기존의 자바스크립트처럼 모든 타입을 받을 수 타입이다. 사용방법은 타입을 선언을 변수뒤에 ": any"를 작성하면 된다.

예시)

var foo: any;
foo = 5;
foo = "five";    // No Error

 

이러한 타입으로 자바스크립트와 타입스크립트를 비교하자면, 자바스크립트는 암묵적으로 any타입으로 선언이 되어 있고, 타입스크립트는 참조되는 값에 타입으로 자동선언이 되기 때문에 any타입을 명시 해줘야 자바스크립트와 똑같이 사용할 수 있다.

 

never

함수의 반환형에서 선언시 사용되는 타입이다. 최근(2016년 버전 2.0 업데이트)에서 논의 되어 추가 되었다. 비동기 방식으로 네트워크 작업이 많은 웹 개발환경에서는 콜백함수를 많이 활용한다. 또한 네트워크는 컴퓨터 또는 디바이스 바깥과 입출력을 하기 때문에 예외(에러) 처리가 필요로 하게 되는데, 타입스크립트에서 이렇게 반환할 수 없는 함수에서 사용하기 위한 서브타입으로 도입하였다.

예시1)

function error(msg: string): never
{
    throw new Error(msg);
}

function fail()
{
    error("fail");
}

 

예시2)

function infinLoop(): never
{
    while(true){}
}

 

 그렇다면, 타입스크립트에 이미 있는 void 타입과 겹치게 되는데, 이러한 void 타입은 엄밀하게 따지면, 자바스크립트에서는 undefined를 반환을 하지만 never타입은 이 조차 반환 하지 않는다(할 수 없는 상황이다).

자세한 설명은 아래의 영문 블로그에서 확인을 할 수 있다.

블로그(영문) The never Type  링크

만약 지금 이해가 안된다 하더라도 걱정하지 말자. 해당 타입은 특별한 경우에만 사용하기 때문에 예시에 나온 경우에만 적용하면 된다.

 

참고자료

타입스크립트 공식 홈페이지의 핸드북(Basic Type)

 

 

반응형
반응형

TypeScript 기초 : 타입의 정의와 의미

TypeScript는 JavaScript와 관계가 C와 C++의 관계와 비슷한다. 즉, TypeScript에서 JavaScript 문법을 사용한다고 해서 빌드가 안되는 것이 아니다. 오히려 TypeScript는 ECMAScript(ES)의 표준에 맞춰서 제작이 되고 있다.


타입정의 하는 방법

JS(JavaScript)에서 변수와 객체선언은 var를 사용해서 선언 혹은 정의를 할 수 있었다. 이 var는 기본적인으로는 5가지 타입(Primitive Data Type)을 갖고 있다(겉보기에는 타입이 없는 것 같지만, 내부적으로 타입을 갖고 있어야 한다. 이러한 타입은 사실 JS에서 자세히 다뤄야 한다).


1. Data Type (number, string, Object)

2. Dynamic type (undefined, number, string, Boolean, Array, Object)

3. Primitive Data (string, number, boolean, null, undefined)

4. Complex Data (function, Object)


이러한 내부적으로 갖고 있는 타입간 충돌이 일어날 경우 브라우저에서는 타입에러(Type Errer) 혹은 미정의에러(Undefined Error)메시지를 콘솔에서 확인할 수 있다.

 간단한 예로 숫자가 들어 있는 변수에 특정 object의 키를 읽으려고 하는 경우에는 의도대로 동작이 안될 것이다.


TS(TypeScript)에서는 이러한 실수를 줄여주기 위해서 변수를 지정을 할때 타입을 명시(혹은 정의)할 수 있다. var로 변수 혹은 객체를 선언을 할때에는 뒤에 ":"를 두고 뒤에 타입이름을 명시하면 된다.

예시)

var foo : number;
foo = 2;
foo = "foo"   // error


하지만, 위의 3번째 줄이 에러라고 해서 빌드한 결과가 에러는 아니다. 위의 세줄을 JS로 변환하면 다음과 같다.

예시)

var foo;
foo = 2;
foo = "foo";


JS에서는 엄밀하게는 "="의 역할이 참조를 의미하기 때문에 foo의 2가 "foo"라는 문자열(string)으로 참조가 바뀌게 된다. 이 경우가 간단한 예제에서는 문제가 없어 보인다. 하지만, 숫자(number)나 객체(object)를 인자로 받아서 계산을 하는 함수가 있다면, 원하는 결과와 다른 결과를 얻게 된다(그리고 그 결과 야근같은 추가 근무가 될 것이다).

 때문에 TS에서 에러로 표시된 것은 가능하면 해결하는 습관을 갖는 것이 장기적으로 생각했을 때 큰 이득이 된다.


타입정의가 가능한 것들

타입정의가 가능한 것들은 JS에서 내부적으로 정의 된 타입보다 자세한 정의가 가능하다. 일단 앞서 언급했던 JS에서 갖는 5가지 타입이 정의 가능하며, TS 2.0 이후에는 null도 독립적인 타입처럼 정의하고 구분을 한다.

타입정의가 가능한 것들

1. JS에서 내부적으로 갖는 5가지 타입

2. TS에서 정의 되어 있는 class 이름

3. TS에서 정의 되어 있는 interface 이름

4. TS에서 정의 되어 있는 enum 이름

5. any 타입(JS의 기본 var 와 같이 모든 타입을 받음)

6. null 타입

7. 콜백함수(Function)와 화살표 함수


타입정의가 가능한 곳(위치)

변수 혹은 객체를 표기할 수 있는 곳은 거의 다 타입정의를 할 수 있다. 다만, 메서의 반환(리턴)값의 경우 메서드의 뒤에 표기를 한다. 이는 메서드의 첫줄로 타입을 확인할 수 있어 가독성의 이점을 준다. 단, 정의를 안한상태에서 리턴값이 있을 경우에는 에러가 아니다.

예시)

function func1(foo: number): number
{ return foo +1; }
function func2(foo: number)  // no error
{ return foo +1; }


한 변수 혹은 객체에 여러 타입을 정의 하기

하나의 변수에 여러개의 타입을 정의한 것도 가능하다. 방법은 or연산과 같은 "|"을 통해서 정의가 가능하다. 메서드의 입력 인자에서 사용하는 경우 메서드 내부에서 타입을 구분해주는 코드가 있어야 에러 메시지가 뜨지 않는다.

예시)

function func1(foo: number | string)
{
    if("string" === typeof(foo))
    foo = Number(foo);
    return foo + 1;
}


마찬가지로 반환(리턴)값의 타입을 정의 할때도 여러개의 타입을 정의 할 수 있다. 이 경우 여러개로 정의 된 타입중에 하나를 반환하면 된다.

예시)

function func2(foo: number): number | string
{
    if(0 < foo){
        return foo;
    }else{
        return "negative number";
    }
}


타입 정의의 의미

정리하면서, 타입스크립트의 탄생배경은 대규모 프로젝트시에 어려움을 줄이기 위해 탄생된 만큼 소규모 웹 앱을 제작할때에는 오히려 타이핑을 더 해야 하는 등의 불편함을 초래 할 수 있지만, 반대로 규모가 커질 수록 개발자의 실수와 가독성을 높여주는 효과가 있다. 그중 핵심적인 기능이 타입정의라 할 수 있다. 타입정의가 되므로 IDE의 인텔리전트(코드 자동완성 및 추천기능) 기능을 이용도 쉬워지며, 능숙하지 못한 개발자의 실수를 줄여주는 효과가 있다. 사실 개발에서 시간을 많이 할애하는것은 타이핑보다는 디버그라는 점을 생각할때 큰 이점이라 할 수 있다.


참조

자바스크립트 타입에 대한 내용

w3schools.com


반응형
반응형

TypeScript: 2.1이상 타입 재정의 적용 방법

개요

초기 TypeScript에서 JQuery나 UnderScore 같은 널리 사용되는 라이브러리를 사용할 경우 TSD에서 제공하는 nodejs 모듈로 다운로드 받아서 사용했었다. 하지만, TypeScript의 버전이 2.1을 넘어가게 되면서 재정의 파일을 받는 방법이 달라지게 되었다.


 현재 최신 타입스크립트를 사용하는 경우 TSD를 통해서 재정의 파일을 다운로드 받을 수 없게 되었다.


2.1버전 이상에서 재정의 파일 파일을 설치하는 방법

tsd의 기능이 현재는 npm에 완전히 넘어가게 되었다. 즉, npm의 명령어를 사용해서 재정의 파일을 설치하게 되었습니다. JQuery를 예를 들면 다음과 같다.


npm install --save @types/jquery


위의 명령어를 실행하면, node_modules 폴더가 생성되며, 그 안에 jquery 재정의 파일이 생성된것을 확인할 수 있다.

또한 npm을 사용하기 때문에 npm에서 제공하는 옵션을 사용할 수 있다. 예를 들어 -g를 사용할 경우 글로벌로 모듈처럼 설치되기 때문에 매번 새로 프로젝트를 새로 시작할때마다 설치할 필요가 없어진다.


npm install -g --save @types/jquery


주의할 점

 이처럼 재정의 기능은 인텔리전트(자동 추천기능)와 타입검사를 지원하기 위한 것이지 실질적인 라이브러리가 아님을 항상 인지해야 한다. 그렇지 않는다면, 라이브러리가 없어서 실행 안되는 결과물을 확인할 수 있다.


참고자료

https://www.npmjs.com/package/@types/node

https://www.npmjs.com/package/@types/jquery

반응형
반응형

JS : 배열 삭제(Array remove)

작성 계기

 일반적인 모듈에서 많이 사용하는 것에 비해서 자주 잊어 먹기때문에 정리를 해두려는 목적으로 작성하였다. 물론 w3s에서 제공하는 영문 문서에 가장 자세하게 기록이 되어 있다.


배열 삭제 메서드

JS는 어떠한 객체든지 기본적인 메서드를 갖고 있다. 그 중 배열타입(자료형: type)에서 제공 되는 삭제는 많이 갖고 있다. 이러한 메서드들은 객체에 귀속되어 있기 때문에 사용할 때에는 객체 뒤에 닷(dot: ".")을 찍어 줘야 한다.


pop()

 스택 자료형에서 들어 본적이 있다면, 익숙한 단어이다. 당연 배열의 가장 뒤에서 부터 삭제를 하는 메서드이다. 이때 삭제되는 원소가 반환된다.

var arr = [1, 2, 3, 4];
var one = arr.pop();   // one === 4


shift()

 큐 자료형에서 들어본적 있을 법한 단어이다. pop()과는 순서상 반대로 배열의 앞에 있는 원소를 반환하면서 삭제한다.

var arr = [1, 2, 3, 4];
var one = arr.pop();    // one === 1


delete

 엄밀하게는 메서드라 할 수 없다. 때문에 사용법도 다르다. 게다가 이 방법으로 삭제된 배열의 원소는 공백(undefined)이 생긴다. 가능하면 쓰지 말자. pop()과 shift()와의 차이점은 배열의 원하는 위를 바로 삭제할 수 있다.

var arr = [1, 2, 3, 4];
delete arr[2];    // arr === [1, 2, undefined, 4]


splice(index, number)

 앞의 pop()과 shift()는 맨앞이나 맨뒤의 요소만 삭제가 가능하다. 하지만 이 메서드는 배열의 중간에 삭제할 수 있다. index배열의 index 번호이고, 뒤의 number는 삭제할 개수이다. 해당 메서드는 삭제외에 삽입의 기능으로 사용도 가능하다. number이후에 추가되는 객체들은 배열에 삽입이 된다. 배열에서 원하는 위치에서 배열의 원소를 삭제하고 싶을 경우 사용이 가능하기 때문에 보통 일반적인 클래스를 만들때 사용하면 매우 유용하다.

var arr = [1, 2, 3, 4];
arr.splice(1, 2);    // arr === [1, 4]


참고자료

w3s : http://www.w3schools.com/js/js_array_methods.asp

반응형
반응형

싱글턴 패턴(Singleton pattern) 예제코드


사용하게 된 계기

 작성한 클래스로 객체를 생성해서 사용을 하는데, 굳이 여러개의 객체를 만들 필요가 없지만, 자주 호출되는 경우 사용하는 것이 싱글턴이고, 웹 프로그램에서도 주로 네트워크라던가 감시하는 종류의 역할을 하는 프로그램의 경우에는 여러객체를 생성하게 되면 상당히 낭비를 하게 된다는 것을 알게 된다.

 이러한 코딩 패턴을 싱글턴(필자는 싱글톤이라고 종종 읽기도 한다)이라고 하고 이러한 패턴은 대부분 프로그래밍 언어에서 디자인이 가능하다. 싱글턴의 자세한 패턴은 "디자인 패턴"에 대해서 공부를 하도록 하자. 타입스크립트(TypeScript)는 비교적 C#과 비슷한 문법을 유지하고 있기 때문에 경력자라면 쉽게 구현하여 사용할 수 있다.


싱글턴 조건

1. 객체가 하나만 존재해야 한다. 객체를 추가로 생성해도 객체는 하나가 되어야 한다.

2. 해당 객체의 메서드는 인스턴스를 통해서 사용할 수 있다.


타입스크립트의 싱글턴 예제들

예제1

 가장 기본적인 예제로 클래스가 생성되는 과정에서 인스턴스에 자기자신이 선언이 된다.

class Singleton
{
    private static _instance: Singleton = new Singleton;
    constructor()
    {
        if(Singleton._instance){
            throw new Error("Error: Instantiation failed: Use Singleton.getInstance()");
        }
        Singleton._instance = this;
    }
    public static getInstance(): Singleton
    {
        return Singleton._instance;
    }
    //...
}
// 싱글턴 사용을 위한 인스턴스
var singleton = Singleton.getInstance();

참조: http://www.codebelt.com/typescript/typescript-singleton-pattern/


예제2

 타입스크립트 2.0 이후부터 권장이 되는 방식으로 앞의 예제1의 경우 클래스가 정의 된가 동시에 싱글턴의 객체가 생성이 된다. 하지만, 이 방식의 경우 코드를 보면 알겠지만, 인스턴스를 최초로 받을 때 객체가 생성이 되기 때문에 라이브러리로 만들어서 사용한다면, 불필요한 객체롤 아예 만들지 않을 수 있기 때문에 위의 방식보다 좀 더 나은 방식이다.

class Singleton
{
    private static _instance: Singleton;
    constructor()
    {
        //...
    }
    public static get Instance()
    {
        return this._instance || (this._instance = new this());
    }
    //...
}
// 싱글턴 사용을 위한 인스턴스
var singleton = Singleton.Instance;


참조: https://github.com/Microsoft/TypeScript/issues/2341


그밖의 예제

검색을 좀 해보면 상당히 많은 방식들을 찾을 수 있다. 아래의 스택오버플로워(stackoverflow)의 채택된 답변외에도 다양한 답들이 있는 것을 확인할 수 있다.

스택오버플로워 질문: http://stackoverflow.com/questions/30174078/how-to-define-singleton-in-typescript

반응형
반응형

TypeScript : 개요

사용하게된 계기

3D 그래픽 디자인 툴중에 Blender라는 착한 오픈소스 프로그램을 접하게 되었고, 이러한 애드온(AddOn)중에 Blend4Web을 접하게 되었다. 이 Blend4Web은 웹 브라우저에서 3D 그래픽 렌더링을 좀더 간단하게 할 수 있는 프레임워크에 해당된다. 문제는 3D 그래픽 웹 앱이 복잡해질 수록 코드줄이 너무 많아지는데, JavaScript 언어적 특성상 규모가 커질 수록 코딩이 어려워지는 단점이 있다.


 이러한 배경에 협업하기로 한 당시 러시아 엔지니어 측에서 TypeScript를 사용했기 때문에 JavaScript보다도 먼저 TypeScript를 사용하게 되었다.


등장계기

TypeScript is superset of JavaScript

나름 힘좀 쓰는 개발자들은 JavaScript(JS)를 무시해왔었다. 이는 스크립트 개념의 프로그래밍 언어가 컴파일 계열 언어에 비해서 실행 속도가 느리기 때문이었는데, 어느날 Java의 가상머신의 발전과 하드웨어의 발전 여기에 구글이 영감을 얻어 JS실행속도를 획기적으로 올리는 등 엄청난 변화가 찾아오게 되었다. 그와 동시에 단일 페이지 웹 앱이라는 개념이 확산됨과 동시에 서버단의 스크립트 언어로써의 확장 등 단 시간내에 엄청난 발전을 이룩하게 되었다.


이로 인해서 과거에는 간단하게 작성하던 스크립트가 갑자기 거대한 스크립트를 작성해야 되었고, MS의 어느 용기있는 옹이 웹 개발자의 삽질을 관찰한 결과 설계하게 된 것이 바로 TypeScript(TS)이다. 하지만, 이러한 언어는 TS만 있는 것이 아니라 이미 CoffeeScript(CS)가 있었다. 하지만, MS에서 오픈소스로 개방하는 등 파격적인 행보를 하면서 빠르게 저변을 확산해 가고 있다.


문법의 특징

 기본적인 설계 방향은 JS위에 C#/Java를 얹힌 문법의 개념이라서 JS만 익힌 사람이라면 거부감이 들 수 있지만, 반대로 C/C++을 먼저 익힌 사람 입장에서는 친숙하다. JS가 C라면 TS는 C++ 개념으로 만들어진 것이라서 JS 문법을 TS에서도 사용이 가능하다. 다만 실행하기 위해서는 TS컴파일러로 컴파일을 해야 한다.


 기존의 라이브러리는 재정의를 해야 하는데, 유명한 라이브러리는 이미 재정의된 파일을 제공하고 있다. npm에서 tsd모듈을 받은 다음에 d.ts 파일을 받아서 사용하면 된다. 재정의 파일은 재정의만 해주는 파일이기 때문에 컴파일이 되지 않고, TS코드를 작성할때 인텔리전트와 타입검사만 지원을 해준다. 실제 실행하기 위해서는 JS 라이브러리 파일도 같이 있어야 한다.


활용범위

JS가 사용되는 곳에서는 TS도 사용이 가능하다. 그리고 TS에 JS코드를 작성해도 실행이 된다. VS20xx 뿐만아니라 Node.js의 npm을 통해서 컴파일러를 다운로드 받을 수 있기 때문에 다른 통합개발툴에서도 컴파일러 설정을 잡아 주기만 해도 컴파일이 가능하다.


Google의 Angular 2.0에서도 TS를 적극 사용하게 되면서 더욱더 주목을 받게 되는 언어가 되었다.


참고 자료

 아쉽지만 아직은 한글로 된 자료가 별로 없다. 영문으로 된 문서를 직접 참조를 해야 한다. 개인적으로 핸드북 번역을 시도는 하고는 있지만.. 언제 마무리 될지는 장담 못 하겠다.


공식 홈페이지 [참조링크]

공식 홈페이지의 핸드북(영문) [참조링크]

Git Book 튜토리얼(영문) [참조링크]

ECMAScript6 명세(TS설계 기준) [참조링크]

TSD공식 홈페이지(타입재정의:영문) [참조링크]

반응형

+ Recent posts