Typescript 문서 - 02

Typescript 문서 - 02

Variable Declarations

var

  • letconst는 Javascript에서 비교적 새로운 유형의 변수이다.
  • const는 변수의 값을 바꿀 수 없고, let은 const의 확장 개념이다.
  • 따라서, Typescript도 let과 const를 지원한다.
  • var를 사용하면 변수의 Hosting현상(해당 변수가 속한 범위=scope의 최상단으로 올려 버리는 현상)
var  n = 1;
function test() {
 console.log(n); // undefined
 var n = 2;
 console.log(n); // 2
}

test();
  • var를 쓰면 버그가 발생할 수 있다.
for (var i = 0; i < 10; i++) {
setTimeout(function() { console.log(i); }, 100 * i);
}
// output
// 10이 10번 찍힘
-> 우리가 생각 했던 건 10에서 하나씩 감소해서 찍히는 건데…
for (var i = 0; i < 10; i++) {
(function(i) { // this
setTimeout(function() { console.log(i); }, 100 * i);
})(i);
}
-> 해결 방법은 각 반복할 때마다 i를 캡처해주는 즉히 호출 함수 표현식 (IIFE)를 사용하는 것

let

  • let은 var와 동일한 방식으로 사용된다. (변수 앞에 추가)
  • block-scope를 호출(var로 선언 된 변수와 달리 블록 범위 변수는 가장 가까운 포함 블록 또는 for 루프 외부에서 볼 수 없음)
  • block-scoped 변수는 선언되기 전에는 읽거나 사용할 수 없다.
a++; // this
let a;
  • 동일한 변수를 중복으로 선언하면 let은 error를 발생시킨다.
let x = 10;
let x = 20; // this

const

  • 값을 바꿀 수 없음
const numLivesForCat = 9;
const kitty = {
 name: "Aurora",
 numLives: numLivesForCat,
}

kitty = { // Error
 name: "MinJin",
 numLives: numLivesForCat
};

kitty.name = "SooJin"; // Ok

let vs. const

  • 값을 수정할 계획이 없다면 const를 사용한다.

Array destrucring

let input = [1, 2];
let [first, second] = input;

console.log(first) // 1
console.log(second) // 2

// swap
[first, second] = [second, first];

// function parameters
function f([first, second]: [number, number]) {
 console.log(first);
 console.log(second);
}
f([1, 2]);

// ...syntax
let [first, ...rest] = [1, 2, 3, 4];
console.log(first); // 1
console.log(rest); // [ 2, 3, 4 ]

Spread operator

// Array
let first = [1, 2];
let second = [3, 4];
let together = [0, ...first, ...second, 5];
// together: [0, 1, 2, 3, 4, 5]

// Object
let infos = {name:  "Soojin", country:  "Seoul"};
let together = {...infos, hobby:  "eating"};
// together: {name: "Soojin", country: "Seoul", hobby: "eating"};

댓글

가장 많이 본 글