- 수나 함수의 타입을 정의할 때 사용할 수 있는 타입 종류는 여러 가지가 있다. 그중 주요 데이터 타입인 다음 아홉 가지 타입을 알아보자.
-string - number - boolean - object - array - tuple - any - null - undefined;
- string은 문자열을 의미하는 타입이다.
var name: string = "captain";
- 특정 변수가 숫자만 취급한다면 number 타입을 사용한다.
var age: number = 100;
- age 변수는 number로 타입이 정의되어 있기 때문에 숫자만 취급할 수 있다. 초깃값으로 100을 넣었다면 이후에 값을 변경할 때도 숫자만 할당할 수 있다.
- 진위 값만 취급하는 변수에는 boolean이라는 타입을 사용한다.
var isLogin: boolean = false;
- isLogin은 사용자의 로그인 여부를 파악하는 데 사용하는 변수이다. 로그인되었으면 true를, 로그인되지 않았으면 false를 할당한다.
- 이렇게 참과 거짓을 구분하는 진위 값을 다루는 경우 boolean으로 타입을 선언한다.
- 객체 유형의 데이터를 취급할 때는 object라는 타입을 사용한다.
var hero: object = { name: "captain", age: 100 };
- hero 변수는 name과 age라는 속성을 갖는 객체이다. 해당 변수가 객체 타입으로 취급된다는 것을 명시하려고 object로 타입을 선언했다.
타입스크립트의 장점을 극대화하려면 가급적 타입을 최대한 구체적으로 선언해야 한다. 이 관점에서 볼 때 예시의 object 타입은 어떤 속성이 있고 해당 속성이 무슨 타입을 갖는지 명시되어 있지 않으므로 자바스크립트를 사용하는 것과 크게 차이가 없다. object를 구체적으로 명시하는 방법은 인터페이스에서 알 수 있게된다.
- 앞 타입들과 다르게 배열 타입은 다음 두 가지 방법으로 선언할 수 있다.
// 문자열 배열
var companies: Array<string> = ["네이버", "삼성", "인프런"];
var companies: string[] = ["네이버", "삼성", "인프런"];
// 숫자 배열
var cards: Array<number> = [13, 7, 2, 4];
var cards: number[] = [13, 7, 2, 4];
- 각각의 회사 이름이 문자열로 선언되었기 때문에 문자열 배열이라는 의미의 Array과 string[] 타입 표기 방식을 사용했다.
Array<배열의 데이터 타입>
배열의 데이터 타입[]
- 이처럼 배열의 타입을 정의할 때는 위 문법으로 타입을 정의할 수 있다. 위에서 ‘배열의 데이터 타입’은 배열을 구성할 요소의 타입을 의미한다.
- 배열 타입을 선언할 때는 Array보다 string[] 형태의 문법을 사용하길 추천한다. 이 2개는 문법적으로만 다를 뿐 역할은 같지만. string[] 형태로 선언하면 키보드 입력도 더 적고 직관적이다.
- Array 형태는 제네릭을 의미하기 떄문에 뒤에서 배워보자.
- 튜플은 특정 형태를 갖는 배열을 의미한다. 배열 길이가 고정되고, 각 요소 타입이 정의된 배열을 튜플이라고 한다.
var items: [string, number] = ["hi", 11];
- 이 코드의 items 변수는 배열 길이가 2고 첫 번째 요소는 문자열, 두 번째 요소는 숫자인 타입으로 정의되어 있다. 즉, 첫 번째 배열 요소에는 문자열 hi가 선언되어 있고, 두 번째 배열 요소에는 11이라는 숫자가 지정되어 있다.
- any 타입은 아무 데이터나 취급하겠다는 의미이다. 타입스크립트에서 자바스크립트의 유연함을 취하려고 할 때 사용하는 타입이다.
var myName: any = "캡틴";
myName = 100;
var age: any = 21;
- 위는 any 타입으로 지정되었기 때문에 초기에는 캡틴이라는 문자열을 갖고 있지만 이후에 다른 데이터 타입의 값으로 변경할 수 있다. 캡틴이라는 문자열을 초깃값으로 할당한 후 다시 숫자 100을 할당했다. 마찬가지로 age라는 변수를 선언할 때도 any 타입을 지정했기 때문에 아무 값이나 할당할 수 있다.
- 자바스크립트에서 null은 의도적인 빈 값을 의미한다. 개발자가 의도적으로 값을 비어 두고 싶을 때 사용하는 값이다.
- 반면 undefined는 변수를 선언할 때 값을 할당하지 않으면 기본적으로 할당되는 초깃값이다.
var empty: null = null;
var nothingAssigned: undefined;
- empty 변수에는 null 값을 할당했기 때문에 null 타입을 지정했다. nothingAssigned 변수는 선언만 하고 아무 값도 할당하지 않아서 undefined가 초깃값으로 지정될 것이다.