타입스크립트 타입 선언

sam_il·2023년 5월 11일
0

TypeScript

목록 보기
3/3
post-thumbnail

타입스크립트에서 선언할 수 있는 타입 종류 정리

❗ 타입스크립트는 일반 변수, 매개 변수, 객체 속성 등에 : TYPE과 같은 형태로 타입을 지정할 수 있다.

✅ JavaScript는 총 6개의 원시 타입(number, string, boolean, null, undefined, symbol(es6에서 추가))과 참조 타입(=원시 타입이 아닌 나머지 타입 :object, array, function..)을 가지고 있다.

타입 선언

  • boolean : true, false
  • string : 문자열
  • number : 숫자 (정수,실수,Infinity,NaN)
  • array : 배열
  • tuple : 튜플
  • object : 객체
  • enum : 열거형
  • symbol : 고유하고 수정 불가능한 데이터 타입이며 주로 객체 프로퍼티들의 식별자로 사용(ES6에서 추가)
  • null : 값이 없음을 선언
  • undefined : 값이 아직 할당되지 않은 변수의 초기값
  • any : 타입을 추론할 수 없거나 타입 체크가 필요없는 변수에 사용. (var 키워드로 선언한 변수와 같이 어떤 타입의 값이라도 할당 가능)
  • unknown: 알 수 없는 타입을 의미하며, any와 같이 모든 데이터 타입을 받을 수 있음
  • void : 일반적으로 함수에서 반환값이 없을 경우 사용
  • never : 절대 발생하지 않는 값

boolean

참(true), 거짓(false) 값

let isBoolean:boolean;
isBoolean=true;

string

문자열 (작은따옴표('), 큰따옴표(") 뿐만 아니라 ES6의 템플릿 문자열도 string 타입에 포함)

let str:stirng="hello";

number

숫자 (정수, 실수, Infinity, NaN)
- 16진수, 10진수, 2진수, 8진수 리터럴도 지원

let num:number=10;

array

배열을 나타내는 2가지 방법
- 배열 요소들을 나타내는 타입 뒤에 1. [] 작성, 2. Array<배열 타입> 작성

//[]
let arr: number[]=[1,2,3];

//Array<배열타입>
let arr2: Array<number>=[4,5,6];

tuple

튜플. 배열의 서브타입 (크기와 타입이 고정된 배열이라고 이해하기)
- 정해진 갯수의 요소를 가져와야 하는 배열을 지정해서 응용 가능
- 값 자체를 고정시킬 수도 있다. (강한 타입)
❗ 튜플은 정해진 타입의 고정된 길이 배열을 표현하지만 이는 할당(Assign)에 국한된다. push() 등으로 추가하는 걸 막을 수는 없다.

let tuple: [number,string]=[1,"hi"];

object

객체 (자바스크립트에서 object는 객체 뿐만 아니라 배열, 함수까지 포함. ❗ 정확히 number, string, boolean, bigint, symbol, null, 또는 undefined가 아닌 나머지를 의미)
- 여러 타입의 상위 타입으로 인식되기 때문에 타입스크립트에서 object를 그대로 타입으로 쓰기에는 오류가 많다.
- 객체에 타입을 지정해주고 싶다면 객체 속성(Properties)들에 대한 타입을 개별적으로 지정하는 식으로 사용해야 하는데 가독성이 좋지 않다.
💡 이를 극복하기 위해 type 리터럴이라고 불리는 alias 기능과 interface라는 문법 추가

//type alias
type IUser = {
    name: string,
    age: number
}
 
let userA: IUser = {
    name: 'HEROPY',
    age: 123
};

//interface
interface IUser2={
	name:string,
    age:string
}

let userB=Iuser2={
	name:'OOP',
    age:"12"
}

enum

열거형. 특정 값(상수)들의 집합.
- 튜플 타입이 특정 타입이나 값을 고정하는 배열이라면, Enum은 특정 값을 고정하는 또다른 독립된 자료형이라고 보면 된다.

enum Fruit {apple, peach, banana}
let eat: Fruit=Fruit.apple; //0

📌📘 타입스크립트 Enum 타입 정복하기

symbol

symbol 값은 변경 불가능하며 고유하며 생성자를 호출하여 생성한다.
📌 TypeScript 핸드북 11 - Symbol

null

값이 없음을 선언.

let block: null=null;

undefinded

값이 아직 할당되지 않음.

let block: undefined=undefined;

any

모든 타입에 대해서 허용한다는 의미.
- 남발해서 사용하면 타입 선언의 의미가 없어지기 때문에 적절한 곳에 사용해야 한다.

let num: any= "string";
num=1;
num=null;

unknown

알 수 없는 타입을 의미하며, any와 같이 모든 데이터 타입을 받을 수 있다.

let num: unknown = 123;

❗ any와 unknown의 차이점 : '엄격함'

  • any를 사용하면 에러없이 넘기지만 할당된 값이 어떤 타입인지 모르기 때문에 함부로 연산을 할 수 없다는 특징을 가지고 있다. 그래서 미리 에디터 자체에서 에러를 띄워준다.

void

함수에서 반환 값이 없을 때 반환 타입을 표현하기 위해 쓰인다
- void를 함수가 아닌 변수 타입으로 정의한다면, void 타입 변수에는 undefined와 null만 할당이 가능하다.

function num(n: number): void {
  let sum: number = n + 1;
}

never

타입스크립트에서 잘못된 것을 알려주기 위한 키워드로 절대 발생할 수 없는 타입을 나타낸다. (어떠한 자료형 값을 담기 위한 타입이 아님)
- 에러를 반환하는 함수 표현식에서 항상 오류를 발생시키거나 절대 반환하지 않는 반환 타입으로도 쓰일수 있다.


📌 참고자료
타입스크립트(TypeScript) 타입 선언
📘 타입스크립트 타입 선언 & 종류 💯 총정리

profile
🍀

0개의 댓글

관련 채용 정보