본문 바로가기
타입스크립트

타입스크립트4. 데이터 타입(2)

by 혀닙 2022. 5. 15.

목차

  1. tuple
  2. undefined, null
  3. any
  4. TS에만 있는 특이한 데이터 타입(void,unknown,never)

 

 


 

 

1. tuple이란?

  • array을 생성
  • 최소한의 길이를 가져야 함
  • 특정 위치에 특정 타입이 있어야 함
  •  

다음과 같이 배열의 엘리먼트가 순서대로 string, number, boolean 유형인 배열이 있다고 하자.

['son', age, true]

 

이러한 배열을 타입스크립트로 생성하려면 어떻게 하면 될까?

 

const player: [ string, number, boolean ] = [
	'son', 30, true
]

// 위와 같이 코드를 작성한다면 타입스크립트는 다음과 같이 이해한다
// plyaer는 배열이며
// 3개의 엘리먼트를 가진다.
// 각각의 엘리먼트의 데이터 유형은 배열의 인덱스 순대로, string, number, boolean이다.

player[0] = 1	 // 첫번째 엘리먼트의 데이터 유형을 string으로 명시해주었는데 number값을 주었기 때문에 에러 발생

 

 

이번엔 지금까지 배운 것 내용 중 tuple과 readonly 속성을 같이 한번 사용해보자

const player : readonly [ string, number, boolean ] = [
	'son', 30, true
]


player[0] = 'Kane'	// 데이터 유형은 str으로 옳지만, 해당 배열은 읽기 전용 배열이기 때문에 엘리먼트의 값 변경 불가 에러 발생

 

 

 

2. undefined와 null

  • 우리가 잘 알고 있는 그 undefined와 null
let a : undefined = undefined
let b : null = null

 

 

3. any 타입

  • 타입스크립트로 부터 빠져나오고 싶을 때 사용하는 타입
  • 가급적 사용하지 않는 것을 권장

 

const a : any[] = [1,2,3,4]
const b : any = true

a + b 	// 에러 발생하지 않음

 

 

 

4. 타입스크립트만의 특이한 데이터 유형

4-1. unknown

  • 어떤 타입일 지 모르는 변수의 경우 사용하면 타입을 확인하는 과정을 요함
let a: unknown;


let b = a + 1;	// 에러 발생


// 따라서 아래와 같이 타입 확인 후 코드 작성
if(type of a === 'number'){
	let b = a + 1
}

 

 

4-2. void

  • undefined를 반환하거나 아무것도 반환하지 않는 함수를 대상으로 사용하는 데이터 유형
  • 일반적으로 별도로 void를 지정할 필요 없음
function hello(){
	console.log('x')
}

 

 

4-3. never

  • 함수가 '절대' 반환하지 않을 때 쓰는 데이터 유형
function hello(): never{
	return 'X';	//에러 발생
}

function helo(): never{
	throw new Error('xxx')	// 반환하지 않고 오류를 발생시킴
}


function hello(name:string|number){
	if(typeof name === 'string'){
        	//name의 유형은 'string'
    } else if(typeof name === 'number'){
    	//name의 유형은 'number'
    } else {
    	name
        // name의 유형은 never. 
        // 인수의 인자값의 데이터 유형이 알맞게 들어왔다면 절대 동작하지 않을 코드

    }

}

댓글