본문 바로가기

JAVASCRIPT/TypeScript

<TypeScript> 기본 타입 - 1 / 원시타입 / 객체 / 배열 / 튜플 +) 튜플 주의할 점, 의도치 않은 에러 주의

 

 

TS에서 데이터 타입을 지정해 주는 방법은 다음과 같다

    const name: string

 

1. 원시타입

- 타입 스크립트에서도 String 및 Number 형과 같은 타입을 다룬다. 통상 데이터 타입을 대문자로 쓰지만

 

타입스크립트의 주요 원시 타입은 모두 소문자이다.

 

 

2.  객체타입

typescript에게 객체 타입임을 알려주기

object 또는 {} 라고 타입 선언을 해주면 된다.

const obj1: object
const obj2: {}

 

3 . 배열

 

- 안에 담길 데이터 형[] , 이렇게 선언해주면 된다

const arr1: string[] // string형 데이터 타입이 담긴 배열 선언
const arr2: any[] // any, 말그대로 어떤 데이터 타입이든 담길 수 있는 배열 선언

 

4. 튜플

 

Tuple : js에는 없는 데이터 타입이다. 컴파일 후 js에서는 일반적인 배열로 인식하지만 타입스크립트에서는 특수 배열을 작성하게 해준다. 예를 들어 어떤 배열의 n번째 인덱스에 어떤 데이터 타입을 가진 데이터가 입력되어야 하는지 지정해줄 수 있다.

배열의 요소를 n개로 지정해서 그 이상의 데이터를 입력해도 들어가지 않게 제한할 수 도 있다.

 

즉,  튜플은 특수배열로, 길이와 데이터 타입도 고정할 수 있다. 컴파일 후에는 JS에서 일반 배열로 인식하지만 TS에서는 튜플로 인식한다.

 

하지만 조심해야할 부분이 있다. push 메서드로 입력하는 것은 막을 수 없다

 

 

const arr1:[number, string]

arr1[1] = 'pepper' // Error 발생, 첫번째 인덱스에는 number형만 들어와야하기때문
arr1 = [ 0 , 'pepper', 'salt'] // Error 발생
======================================================

const arr2:[number, string]
arr2 = [ 3, 'cat']

arr2.push('dog')
console.log(arr2) 

=>  [ 3, 'cat', 'dog']

내 추측으로는 아마 컴파일 후 JS에서 일반배열로 인식하기 때문이 아닌가 싶다.  push() 메서드는 배열의 끝에 요소를 하나 추가하고 새로운 길이를 반환하는 기능을 하기 때문이다.

 

 

 

 

 

+)   js에서 number 형은 기본적으로 float 형이다. 즉

<js>
 5 == 5.0

이라는 뜻이다.

 

연산을 출력할 때 string과 number 형이 같이 있으면 모두 string 형으로 바꾼다

728x90