타입스크립트의 타입 정리 1 : number, string, boolean, Array, tuple, null, undefined, literal, any, void, never, object, intersection, union, alias : typescript

horiz.d·2021년 12월 26일
0

Typescript


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';
profile
가용한 시간은 한정적이고, 배울건 넘쳐난다.

0개의 댓글