[TypeScript] Typescript 기본 타입
TypeScript의 기본타입에 대하여 알아보겠습니다.
JavaScript에 존재하는 타입
JavaScript에서는 string 값을 정의한다면 아래와 같이 선언하면 끝이다.
let helloText= = 'Hello';
하지만 TypeScript에서는 우리가 변수명 옆에다가 colon을 넣고 원하는 타입을 입력할 수 있습니다.
let helloText: string = 'Hello';
이렇게 입력하고 나면 helloText라는 변수에는 string 타입만 입력할 수 있습니다.
만약 다른 타입의 값을 입력하면 에러가 나타나는 것을 볼 수 있습니다.
이처럼 TypeScript에서는 type을 지정할 수 있고 명시된 type 외에 다른 type은 저장할 수 없습니다.
JavaScript에서의 7개 type을 TypeScript의 타입으로 선언해 보겠습니다.
(type을 입력할 때 소문자로 작성해야 합니다!)
만약 BigInt에서 저처럼 빨간 줄이 생긴다면 버전이 맞지 않아서 발생하는 것입니다.
이런 경우에는 tsconfig.json 파일의 target 부분을 조금 더 최신 버전인 2020 버전으로 바꿔준 다음 저장해 줍니다.
이 버전은 컴파일하려는 타깃 버전이(자바스크립트 버전이) 빅인트라는 기능을 가지고 있지 않기 때문에 에러가 나는 것입니다.
에러가 사라지는 것을 확인할 수 있습니다.
TypeScript에만 존재하는 타입
any
아무 타입이나 입력할 수 있는 type
any로 타입을 지정해 두면 다음과 같이 number도 넣을 수 있고 string도 넣을 수 있고 무엇이든 괜찮습니다.
그리고 아래처럼 any는 어떤 type에도 값을 할당할 수 있습니다.
그러나 적절한 곳에서 사용하지 않으면 TypeScript를 사용하는 이점이 사라질 수 있습니다.
따라서 코드를 보다 안정적으로 유지하고 예상치 못한 오류를 방지하기 위해서는 any 타입 사용을 최소화하고 명시적인 타입 선언을 최대한 활용하는 것이 중요합니다.
unknown
모든 값의 타입을 알 수 없는 경우에 사용됩니다.
이렇게 any처럼 모든 타입을 저장할 수 있습니다.
하지만 any처럼 다른 type에 값을 할당하려고 하면 에러가 납니다
any와 비슷해 보일 수 있지만 any와 달리 보다 엄격하게 다루어집니다.
never
절대 발생하지 않는 값의 타입을 나타냅니다.
이처럼 never 타입은 어떤 타입도 아니기 때문에 값을 넣을 수 없습니다.
주로 예외 또는 무한 루프 등의 오류를 나타내는 데 사용됩니다. 예를 들어 함수가 항상 오류를 throw 하는 경우, 해당 함수의 반환하는 유형은 never가 됩니다. neve 타입은 모든 타입의 하위 타입이기 때문에 never에는 다른 타입의 값을 할당할 수 있습니다.
function error(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
// do something
}
}
이 코드에서 error 함수는 항상 예외를 throw 하고 infiniteLoop 함수는 항상 무한 루프에 빠지기 때문에 두 함수의 반환 타입은 never입니다.
list
보통 배열을 의미하는 Array 타입을 사용합니다.
예를 들어 string 타입의 배열은 string []로 표기할 수 있습니다.
string 타입의 배열은 string만 포함될 수 있습니다.
TypeScript는 배열의 요소가 모두 동일한 타입인지 확인하므로 배열에 다른 타입의 요소를 추가하려고 하면 오류가 발생합니다.
이러한 기본 타입들을 사용하여 TypeScript에서 타입을 활용할 수 있습니다.
