"도로 차선" 예시를 들어보자. 각 차로에 제한을 두지 않고 자유롭게 차로를 이용할 수 있다면 편할 것이다.
하지만 자유로운 만큼 사고가 발생할 확률 또한 커진다.
하지만 각 차로에 접근 가능한 차량에 제한을 둠에 따라, 다소 제약이 따르긴 하지만 사고를 미연에 방지할 수 있다.
프로그래밍 작성 시, 타입 지정이 없다면 편하게 코드를 짤 수 있지만 작성한 코드에 문제가 발생할 확률이 높다.
반면 타입을 지정하게 되면 잘못된 것을 사전에 확인할 수 있어 미연에 사고를 방지할 수 있어 유용하다.
- Boolean
- Number
- String
- Object
- Array
- Tuple
- Enum
- Any
- Void
- Null
- Undefined
- Never
boolean
값이라고 일컫는 참/거짓(true
/false
) 값이다.let isShow: boolean = true;
let isDone: boolean = false;
:
를 이용하여 자바스크립트 코드에 타입을 정의하는 방식을 타입 표기(Type Annotation)라고 한다.Number
타입 하나로 표기한다. let number1: number = 5;
let number2: number = 0.7;
"
)나 작은따옴표('
)를 문자열 데이터를 감싸는데 사용한다.let firstName: string = "coding";
let lastName: string = 'kim';
let longString: string = `Kimcoding is a developer.
He is 20 years old.`
[]
을 쓰는 것이다.//첫 번째 방법
let items: string[] = ["apple", "banana", "grape"];
Array
를 먼저 작성한 뒤, <>
안에 배열의 요소들을 나타내는 타입을 작성한다.//두 번째 방법
let numberList: Array<number> = [4, 7, 100];
let user: [string, number, boolean] = ["kimcoding", 20, true];
console.log(user[2].toString()); //error
user[2]
에 접근하게 되면, user[2]
에 있는 요소는 boolean
타입이기 때문에 타입 에러가 발생한다.typeof
연산자를 사용했을 때 “object”
을 반환하는 모든 타입을 의미한다.number
, string
, boolean
, undefined
, null
, symbol
이 있다.let obj: object = {};
object
타입은 모든 객체를 수용하는 타입으로, 객체의 프로퍼티 타입들이 any
로 지정되기 때문에 어떠한 프로퍼티라도 추가할 수 있다.key-value
에 구체적인 타입까지도 지정할 수 있다.let user: {name: string, age: number} = {
name: "kimcoding",
age: 20
}
any
타입을 사용할 수 있다.let maybe: any = 4;
any
타입을 사용하게 되면, 변수에 값을 재할당하는 경우 타입을 명시한 변수와 달리 타입에 구애받지 않고 값을 재할당할 수 있게 된다.
let obj: object = {};
// 에러가 난다.
obj = "hello";
let maybe: any = 4;
// 정상적으로 동작한다.
maybe = true;
또한 엄격한 타입 검사를 진행하지 않기 때문에, 실제 할당된 값이 가지지 않는 메서드 및 프로퍼티로 접근해도 에러가 나지 않는다.
대신, 실제 할당된 값이 가지지 않는 메서드 및 프로퍼티이기 때문에 반환되는 값은 undefined
이다.
let maybe: any = 4;
// undefined로 출력된다.
console.log(maybe.length);
또한 any
타입은 타입의 일부만 알고, 전체는 알지 못할 때 유용하다.
예를 들어서 여러 타입이 섞인 배열을 받고자 할 때 유용하다.
let list: any[] = [1, true, "free"];
// any로 다루고 있기 때문에 index 1번째 요소가 boolean 타입이지만 number 타입으로 재할당할 수 있다.
list[1] = 100;
void
는 어떤 타입도 존재할 수 없음을 나타내기 때문에, any
의 반대 타입 같다.function warnUser(): void {
console.log("This is my warning message");
}