
타입스크립트의 기본 타입에는 크게 12가지가 있다.
기존 JS 문자열 선언 방식
var str = 'hello';
TS 선언 방식
TS를 사용할 때는 대부분 es6이상을 이용한다. - let, const 사용
타입 표기(Type Annotation):
:를 이용하여 자바스크립트 코드에 타입을 정의하는 방식
let str: string = 'hello';
let num: number = 10;
// 제네릭 : Array<타입>
let arr: Array<number> = [1, 2, 3];
// 배열 리터럴 앞에 타입을 정의
let items: number[] = [1, 2, 3];
// 변수 타입에 어긋나는 경우 경고를 띄워 줌 (빨간밑줄-마우스오버하면 내용 뜸)
let heroes: Array<string> = ['Capt', 'Thor', 'Hulk', 10];

간단한 객체는 object로 정의할 수 있지만, 더 구체적으로 object를 정의하고 싶다면 객체를 열어두고 그 안에 들어갈 속성의 타입까지 정의할 수 있다.
let address: [string, number] = ['gangnam', 100];
// 타입스크립트에서 객체를 정의하는 방식
let obj: object = {};
// 객체의 특정 속성의 값까지 타입을 정의
// 1) person이라는 변수를 object라고만 정의를 하면 person변수에 어떤 속성이 들어오던지 크게 신경쓰지 않는다.
let person: object = {
name: 'capt',
age: 100
};
// 2) person의 속성에 타입이 설정되면 해당하는 타입의 속성이 들어와야 한다.
let person: { name: string, age: number } = {
name: 'capt',
age: 100
}
let show: boolean = true;
파라미터에 타입을 정의하는 방식function sum(a:number, b:number) {
return a + b;
}
sum(10, 20);
반환 값에 타입을 정의하는 방식function add(): number {
return 10;
}
function sum(a: number, b: number): number {
return a + b;
}
JS에서는 함수실행 시 인자가 추가적으로 들어가게 되면 추가적인 인자들에는 반응하지 않는다. 이것이 JS가 주는 유연함이다.
function sum(a, b) {
return a + b;
}
sum(10, 20, 30, 40, 50);
TS에서는 불필요한 인자가 들어갈 경우 어떻게 제약이 될까?
function sum(a: number, b: number): number {
return a + b;
}
sum(10, 20, 30, 40);

함수의 옵셔널 파라미터
?를 붙여준다.function log(a: string, b?: string, c?: string) {}
log('hello world');
log('hello ts', 'abc');
타입스크립트에서는 물음표와 느낌표에 많은 차이가 있다.
💡참고
🖥 강의 참고 자료