타입의 정의

💡 타입은 값과 이 값이 할 수 있는 일의 집합

예를 들어 string타입은 string이라는 값과 .toUpperCase()와 같은 메소드의 집합이다.

타입은 유효하지 않은 동작을 사전에 방지하는 기능을 제공한다. 또한, 타입을 선언한다는 것은 제한한다는 뜻이고 이 타입의 부분집합만 허용하겠다는 의미이다. 다음의 간단한 예를 보자.

function squareOf(n: number) {
	return n * n;
}
squareOf(2);
squareOf('2');  // error

n은 number라는 타입으로 명시하였다. 이는 n을 number 으로 제한한다는 의미이면서 n은 number의 하위타입만 올 수있다는 의미이다.

타입스크립트에서 제공하는 타입

any

타입 정의에 의해 any는 모든 값이 가능하고 모든 행위를 할 수 있다는 의미이다. 이는 .pizza()와 같은 메소드를 사용할 수 있다는 의미이다.

unknown

let a: unknown = 3;
let c = a * 3 // error
if (typeof a === 'number') {
	let b = a * 3; // number
}

typeofinstanceof와 같은 방식으로 정제를 한다면 사용할 수 있게 된다.

💡 타입 리터럴 오직 하나의 값을 나타내는 타입 다른 값이 오는 것을 방지하여 실수를 줄이는데 도움을 준다.

객체

자바스크립트처럼 타입스크립트도 duck typing으로 객체를 정의한다.