💡 타입은 값과 이 값이 할 수 있는 일의 집합
예를 들어 string
타입은 string이라는 값과 .toUpperCase()
와 같은 메소드의 집합이다.
타입은 유효하지 않은 동작을 사전에 방지하는 기능을 제공한다. 또한, 타입을 선언한다는 것은 제한한다는 뜻이고 이 타입의 부분집합만 허용하겠다는 의미이다. 다음의 간단한 예를 보자.
function squareOf(n: number) {
return n * n;
}
squareOf(2);
squareOf('2'); // error
n은 number
라는 타입으로 명시하였다. 이는 n을 number
으로 제한한다는 의미이면서 n은 number
의 하위타입만 올 수있다는 의미이다.
타입 정의에 의해 any는 모든 값이 가능하고 모든 행위를 할 수 있다는 의미이다. 이는 .pizza()
와 같은 메소드를 사용할 수 있다는 의미이다.
let a: unknown = 3;
let c = a * 3 // error
if (typeof a === 'number') {
let b = a * 3; // number
}
typeof
나 instanceof
와 같은 방식으로 정제를 한다면 사용할 수 있게 된다.
💡 타입 리터럴 오직 하나의 값을 나타내는 타입 다른 값이 오는 것을 방지하여 실수를 줄이는데 도움을 준다.
자바스크립트처럼 타입스크립트도 duck typing으로 객체를 정의한다.