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 |
---|