일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시큐리티
- apache
- OAuth
- 페이스북
- 리팩토링
- 클린코드
- load balancing
- 스프링
- jvm
- g1
- gdg
- 스프링부트
- 페이징
- assertj
- JPA
- Security
- tomcat
- clean code
- RabbitMQ
- GC
- oauth2
- Producer
- java
- 권한
- 비동기
- JWT
- Refactoring
- 스프링 부트
- Spring
- spring boot
- Today
- Total
허원철의 개발 블로그
[펌] TypeScript 본문
- TypeScript는 대형 자바스크립트 애플리케이션에 적합한 대안 언어이다.
- TypeScript를 활용하여 개발하여도 기존의 소프트웨어 컴포넌트와 자바스크립트 라이브러리의 동작 방식과는 충돌하지 않는다. 또한, 동적인 모듈 로딩을 지원하여 네이밍 충돌 문제를 줄일 수 있게 해주며, 추가된 타입 체계를 바탕으로 생산성을 높여주는 여러가지 툴과 사례(정적 타이핑, 심볼 기반 네비게이션, 구문 완성, 코드 리펙토링 등)를 활용할 수 있다.
- TypeScript는 ES5 (ECMAScript 5) 문법의 상위 집합(Super Set)이다.
-모든 자바스크립트 프로그램은 TypeScript 프로그램이기도 하다. TypeScript 컴파일러는 TypeScript 문법을 자바스크립트 문법으로 변환시켜주며, 이때 코드에서 변수를 정의한 순서나 이름을 바꾸지 않는다. 따라서, 자바스크립트 결과물을 브라우저에서 디버깅하여 TypeScript 코드를 수정하기에도 용이하다. 또한, 부가적으로 소스 맵도 제공하므로 TypeScript 소스를 직접 디버깅하는것도 가능하다. TypeScript를 지원하는 도구들은 일반적으로 코드 저장시 자바스크립트 결과물을 생산하며, 기존의 자바스크립트 개발 사이클 대로 프로젝트를 진행할 수 있다.
- TypeScript는 ES6 (ECMAScript 6)에서 제안된 여러가지 기능들과 클래스, 모듈등의 문법도 포함되어 있다.
-클래스는 전통적인 객체 지향 프로그래밍 패턴을 기반으로 상속과 같은 기능들을 자바스크립트 보다 훨씬 표현력있게 사용할 수 있다. 모듈은 네이밍 충돌 문제와 자유롭게 코드를 컴포넌트화 할 수 있게 해준다. 컴파일러에서는 모듈을 정적 또는 동적으로 로드할 수 있도록 하는 “모듈 코드 생성 (Module Code Generation)” 옵션을 제공하고 있다.
function append(str1:string, str2:string): string{
return str1 + str2;
}
var str:string = append('hello', 'Type Script!!');
console.log(str);
[Hello.js]
function append(str1, str2) {
return str1 + str2;
}
var str = append('hello', 'Type Script!!');
console.log(str);
class Greeter {
greeting: string;
constructor(message: string){
this.greeting = message;
}
greet() {
return 'Hello, ' + this.greeting;
}
}
var greeter = new Greeter('world');
[Greeter.js]
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return 'Hello, ' + this.greeting;
};
return Greeter;
}());
var greeter = new Greeter('world');
interface LabelValue {
label: string;
}
function print(labelObj: LabelValue) {
console.log(labelObj.label);
}
var obj = {
size : 10,
label : 'Size 10 Obj'
}
print(obj);
[Label.js]
function print(labelObj) {
console.log(labelObj.label);
}
var obj = {
size: 10,
label: 'Size 10 Obj'
};
print(obj);
class Animal {
constructor(public name: string) { }
move(distanceInMeters: number = 0) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
}
class Snake extends Animal {
constructor(name: string) { super(name); }
move(distanceInMeters = 5) {
console.log("Slithering...");
super.move(distanceInMeters);
}
}
class Horse extends Animal {
constructor(name: string) { super(name); }
move(distanceInMeters = 45) {
console.log("Galloping...");
super.move(distanceInMeters);
}
}
let sam = new Snake("Sammy the Python");
let tom: Animal = new Horse("Tommy the Palomino");
sam.move();
tom.move(34);
[Animal.js]
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var Animal = (function () {
function Animal(name) {
this.name = name;
}
Animal.prototype.move = function (distanceInMeters) {
if (distanceInMeters === void 0) { distanceInMeters = 0; }
console.log(this.name + " moved " + distanceInMeters + "m.");
};
return Animal;
}());
var Snake = (function (_super) {
__extends(Snake, _super);
function Snake(name) {
_super.call(this, name);
}
Snake.prototype.move = function (distanceInMeters) {
if (distanceInMeters === void 0) { distanceInMeters = 5; }
console.log("Slithering...");
_super.prototype.move.call(this, distanceInMeters);
};
return Snake;
}(Animal));
var Horse = (function (_super) {
__extends(Horse, _super);
function Horse(name) {
_super.call(this, name);
}
Horse.prototype.move = function (distanceInMeters) {
if (distanceInMeters === void 0) { distanceInMeters = 45; }
console.log("Galloping...");
_super.prototype.move.call(this, distanceInMeters);
};
return Horse;
}(Animal));
var sam = new Snake("Sammy the Python");
var tom = new Horse("Tommy the Palomino");
sam.move();
tom.move(34);
'javasript' 카테고리의 다른 글
Node.js - 로컬 모듈 접근에 대한 다양한 개선 방법 (403) | 2017.10.20 |
---|---|
Node.js - 시작하기 (422) | 2017.10.11 |
JSON vs JSONP (415) | 2017.06.16 |
Java Script - ECMAScript 6th(ES6) (416) | 2017.04.20 |