티스토리 뷰
목차
숫자 또는 문자열로 지정 가능한 변수
// 태어난 연도를 숫자 또는 문자열로 설정
let birthYear: number | string;
// 정상
birthYear = 1980;
// 이것도 정상
birthYear = '천구백팔십';
// 대답하기 싫어서 null을 넣으면 에러
birthYear = null;
// error TS2322: Type 'null' is not assignable to type 'string | number'.
Union Type
다음 타입스크립트 코드는 변수에 들어가는 값을 특정 문자열들로 제한하는 기능입니다. "|"으로 대입 가능한 여러 값을 열거합니다. 이렇게 복수 형태로 취하는 것을 Union Type 형태라고 합니다. 미리 정의되지 않은 문자열을 대입하면 오류입니다.
// 변수에 특정 문자열에서만 설정하는 예시
let favoriteFood: "북극" | "시원한 음식";
favoriteFood = "시원한 아이스크림"
// error TS2322: Type '"시원한 아이스크림"' is not assignable to
// type '"북극" | "시원한 음식"'.
// number 값도 사용 가능
type PointRate = 8 | 10 | 20;
// 아래는 에러
let point: PointRate = 12;
자료형 형식과 값을 결합할 수도 있습니다.
// 값과 자료형을 함께 선언할 수 있음
let country: number | "고구려" | "발해";
country = "고구려";
country는 number 또는 고구려 또는 발해란 값만 가질 수 있습니다. (... 충격이다 증말 ...)
같은 이름의 변수
아래 타입스크립트 코드를 보면 압니다.
function oldFunction() {
console.log(`테스트 ${v}`);
var v = "어린이";
}
oldFunction();
// 새로 선언한: let/const
function letFunction() {
console.log(`테스트 ${v}`);
let v = "테스트 문자";
// error TS2448: Block-scoped variable 'v' used before its declaration.
}
letFunction();
변수의 범위
이전에는 {, }가 제어 구문용 블록에 지나지 않았고, var 변수는 선언된 function 어디에서나 접근할 수 있었습니다. 타입스크립트에서는 let, const로 선언한 변수 범위는 선언된 블록(if, for 포함)에 한정됩니다. 범위가 좁아지면 파악할 범위가 줄어들어 코드 가독성이 높아집니다.
// 예전 스타일 코드
for (var i = 0; i < 10; i++) {
// do something
}
console.log(i); // -> 10
// 새로운 스타일 코드
for (let i = 0; i < 10; i++) {
// do something
}
console.log(i);
// error TS2304: Cannot find name 'i'.
... 미완성 글입니다. ...