[TypeScript] Additional Types

Joah·2022년 9월 29일
0

TypeScript

목록 보기
6/16

원시형 타입 외의 추가적인 타입

unknown (최대한 사용을 지양)💩

값의 타입이 무엇인지 모를때, 즉 아무런 타입이 와도 상관없음

let notSure: unknown = 33
notSure = "hello";
notSure = true;

//위의 할당 모두 가능하다. 어떤 데이터 타입도 할당 가능하게 하니 타입스크립트와 어긋나는 개념

📍 그럼 왜 있을까?
타입스크립트는 타입이 없는 자바스크립트와 연동이 되기 때문이다. 만약 자바스크립트 라이브러리를 사용할때 그 리턴값을 모를 수 있다. 그때 사용되지만 최대한 그 값을 알아서 타입을 지정하는 방향으로 코딩을 해야한다.


any (최대한 사용을 지양)💩

아무 데이터 타입이나 다 쓸 수 있다. Anything!

let anything: any = 6;
anything = "Joah";
anything = false;

//위의 할당 모두 가능하기 때문에 최대한 사용을 지양한다.

void

함수에서 아무런 값을 리턴하지 않을 때 사용된다.

function simplyPrint(): void{
	console.log("Hello World")
}

//단순히 출력만 하고 어떤 값도 리턴하지 않기 때문에 void를 사용한다.
//이럴때 void를 생략할 수 있다.

let unusual: void = undefined; => 💩
//변수에 void를 할당할 시 undefined만 할당할 수 있기 때문에 사용하지 않는다.

never

함수에서 값이 절대 리턴되지 않는 경우. 주로 에러문을 던질때 사용된다.

function throwError(): never{
	//서버에 에러가 났다고 log를 보내고 message -> server(log)
  throw new Error(message);
  //사용자에게 에러 메세지를 띄운다.
}

let neverEver: never; => 💩
//이런식으로 절대 쓰이지 않는다. 변수를 절대 리턴하지 않는다? 벌써 말도 안됨

object (사용을 지양하며 어떤 obj 타입인지 정확히 명시) 💩

object에는 원시형 타입인 primitive type 제외하고 모든 객체형 데이터가 포함된다.

let obj: object = [1,3,4];

function anyObject(obj: object){};
anyObject({name: "Joah"});
anyObject(["dog", "cat", "cow"]);

위와 같이 어떤 타입의 object 즉 배열, 객체, 함수 모두 할당 가능하기 때문에 이것 또한 정확한 타입을 지정하는 것이 아니다.

따라서 사용하기 위해서는 object의 value가 어떤 타입을 가지는지, 배열의 요소가 어떤 타입인지 작성하는게 맞다.

profile
Front-end Developer

0개의 댓글