number
//1. 기본 타입 예시 const size: number = 123; // number
boolean
const isBig: boolean = size >= 100 ; // boolean
string & boolean & 3항 연산
const msg: string = isBig ? '크다' : '작다'; // boolean 연산 결과를 string으로 반환
Array
<type>
| type[]//array const values: number[] = [1,2,3]; //슷자 배열 1 const values2: Array<number> = [1,2,3] //숫자 배열 2 values.push(4) // 배열 메서드 push 활용 (타입 일치해야함: 여기선 number)
tuple : [type1, type2]
//tuple const data: [string, number] = ['ItMustBeString', 1]; // 문자열&숫자 Tuple 자료형 data[0].substr(1); data[1].substr(1); // 에러 : data tuple의 인덱스 1의 타입은 number이므로 substr 메서드 사용불가.
null & undefined
//2. null & undefined let v1: undefined = undefined; //undefined : 해당 타입에 숫자 입력시 에러 let v2: null = null; //null //union 타입 let v3: number | undefined = undefined; // undefined&null은 다른 타입과의 유니온 타입 정의에 많이 사용된다. v3 = 123;
Literal
//3. Literal : 리터럴 //number 리터럴 let numberLiteral: 10 | 20 | 30 ; numberLiteral = 10; numberLiteral = 15; //에러 : 리터럴 타입은 초기 지정 도메인 내에서만 입력 가능하다. //string 리터럴 let stringLiteral: 'bad'|'soso'|'nice'; stringLiteral = 'bad' stringLiteral = 'great' //에러
any
//4. any 타입 let anyType: any; anyType = 123; anyType = 'good'; anyType = () => {}; //any타입은 함수가 될 수도 있다.
function : void & never
//5. void & never : 함수의 반환값 지정 타입 //void : 아무값도 반환하지 않고 종료되는 함수의 반환 타입은 void 타입으로 정의할 수 있다. function f1(): void { console.log('Hello'); //반환값 없음 : void } //never : 항상 에외가 발생해서 비정상적으로 종료되거나 무한 루프 때문에 종료되지 않는 함수의 반환타입은 never로 지정 function f2(): never { throw new Error('some error'); //비정상 종료 함수 : never } function f3(): never { while (true) { //무한루프로 종료되지 않는 함수 : never // ... } }
object
//6. object타입 //object타입은 자바스크립트에서 일반적으로 사용되는 객체 타입 let objectV : object; objectV = {name: 'cho seong woo'} console.log( objectV.prop1 ); //타입에러!!!!! : //객체의 속성에 대한 정보가 없기 때문에 특정 속성값에 접근하면 타입에러가 발생한다!. //=> 인터페이스(interface)를 사용해서 속성 정보를 포함해서 타입을 정의해줘야한다.
intersection & union
//7. 교차 타입 & 유니온 타입 ( intersection & union ) // 교차 타입 (intersection: & ) : 여러 타입의 교집합만을 채택 // 유니온 타입 (union: | ) : 여러 타입의 합집합을 채택 let is1: ( 1 | 3 | 5 ) & ( 3 | 5 | 7 ); // 1,3,5의 유니온과 3,5,7의 유니온의 인터섹션을 타입으로 지정 : 3 | 5 is1 = 3; is1 = 1; //타입 에러!! 3, 5 만을 타입으로 지정할 수 있음
alias
//8. type 키워드로 타입에 별칭(alias) 지정 type Width = number | string ; // Width라는 alias로 지정해준 새로운 타입은 number와 string의 유니언 타입 let widthVal: Width; widthVal = 100 widthVal = '100px';