본문 바로가기
기술 개발/Typescript

타입스크립트의 기본 타입

by 쪼짱 2022. 12. 19.
728x90
반응형
SMALL

자바스크립트 언어의 타입은 원시 값과 객체로 나뉜다.

원시값 (Number, String, Boolean, Undefined, Null, BigInt, Symbol)

객체 (Functuon, Array...)

 

자바스크립트 원시 값을 기준으로,

특수한 상황이 아니면 잘 사용하지 않는 symbol과 bigint를 제외하고

number, string, boolean, undefined, null 타입을 정리했다.

  • 숫자(Number)
// number
const num: number = -6;
  • 문자열(String)
// string
const str: string = 'hello world';
  • 불리언(Boolean)
// boolean
const bool: boolean = true;
  • Undefined - 값이 정해지지 않은 상태
// undefined
let name: string | undefined;
name = undefined;
name = 'suz';
function find(): string | undefined {
	return undefined;
  }
  • Null - 값이 비어져있는 상태
// null
let str: string | null;

아래 코드와 같이 undefined와 null은 단독으로는 잘 사용하지 않는다.

let name: undefined;
let age: null;
 
 
그 외 타입들이다.

unknown, any, void, never 타입이 있다

  • Unknown
    • 어떤 타입일지 몰라 모든 타입에 대해 허용한다는 의미를 가진 타입
    • unknown을 어쩔 수 없이 써야할 상황이 있을 수도 있으나, 이를 사용하는 쪽에서의 방어처리를 해서 안전하게 사용가능하다.
// unknown
let notSure: unknown = 0;
notSure = 'he';
notSure = true;
  • Any
    • 모든 타입에 대해서 허용한다는 의미를 가진 타입
    • any는 아무때나 쓸 수 있지만, typescipt를 쓰는 의미가 없게 되어버릴 수 있기 때문에 사용하지 않는 것이 좋다.
// any
let anything: any = 'hi';
anything = 10;
anything = true;
  • Void
    • 변수에는 undefined와 null만 할당하고, 함수에서 아무런 값도 return하지 않는 타입
// void
let unuseful: void = undefined;

function print(): void {
    console.log('hello');
	return;
}
  • Never
    • 함수는 절대 함수 끝까지 실행되지 않는다는 의미를 지닌 타입 
    • 아무 값도 return할 수 없는 타입
    • while문이나 에러를 던진다.
// never
let neverEnd: never;

function throwError(message: string): never {
    throw new Error(message);
}

function throwError(message: string): never {
    while (true) {}
}

 

그리고 object 타입이 있다.

  • Object
    • 원시타입을 제외한 모든 객체 타입을 할당 가능하다.
    • 아래 예시와 같이 object 타입을 그대로 명시해줘도 가능하지만, typescript를 사용할 이유가 없기 때문에 이렇게 사용하지는 않는다.
    • 보통 type alias를 사용하여 타입을 따로 선언하는 방식을 많이 사용한다.
// object
let obj: object;
obj = { name: "suz", age: 20 };
obj = { obj: {}, arr: [], boal: true };

function acceptSomeObject(obj: object) {}
acceptSomeObject({ name: 'suz' });
acceptSomeObject({ age: 20 });

 

 


참고

https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures

https://joshua1988.github.io/ts/guide/basic-types.html

https://mine-it-record.tistory.com/581?category=1282317 

https://www.typescriptlang.org/docs/handbook/2/everyday-types.html

 

728x90
반응형
LIST

'기술 개발 > Typescript' 카테고리의 다른 글

타입스크립트를 쓰는 이유  (0) 2022.12.16