TS

TS 02 readonly, any, nuknown, void, never

와라리요 2023. 1. 30. 14:12

readonly

 - 타입 앞에 선언하며 값을 변경하지 못하게 막는다. 즉, 보호장치인 격

const nums: readonly number[] = [1, 2, 3, 4];

name.push(5); //안 되단고 오류가 뜸.

 

 


any

 - TS는 타입은 선언하지 안 하고 값에 해당하는 타입으로 자동 설정이 된다. (그래도 선언하는 이유는 안전성과 코드 작성하는 분들에게 가시적으로 보여들이기 위함.) 그런데 any룰 타입으로 주게 되면 TS가 아닌 JS처럼 타입에 상관없이 조각 가능하게 해 준다.

const a : any = "12";
const b : any[] = [1, 2, 3];

a + b // '121, 2, 3'이 출력 됨

 

 


unknown

 - 타입이 무엇인지 모를 때 사용하며 조건문을 이용해 타입을 선언하면 조건문 안에서는 그 타입으로 적용이 되어 사용할 수 있게 해 준다.

 

let a: unknown;

let b = a + 1; // 오류가 뜸

if (typeof a === 'number') {
	let c = a + 1; // 됨
}

 

 


void

 - 아무것도 return하지 않을 때 선언하며 선언하지 않아도 알아서 설정이 된다.

 

// 선언을 미리 한다면
function hello(): void{
	console.log('와우');
}

 

 


never

 - 함수가 return하지 않을 때 또는 한 변수에 타입을 여러 개 선언했을 때 해당 타입이 없을 시 선언 됨.

function num() {
  return 1;
}

function num(): void {
  return 1; //오류가 발생 됨.
} 

function user(password: string|number) {
  if (typeof name === 'string') {
    password // 문자열
  } else if (typeof name === 'number') {
    password // 숫자형
  } else {
    password // void
  }
}