본문 바로가기

타입스크립트

typescript - 타입

 

 

 

 

타입의 지정

type of

console.log(typeof 'hello') //string

   - 변수의 타입을 반환해주는 연산자

   - 반환되는 타입은 string 문자열로 반환됩니다.

 

 

 

 

typescript 의 타입

   1) string : 문자열 타입

      Ex) "Hello world"

 

   2) number : 숫자 타입

      Ex) 25, Infinity, NaN

 

   3) boolean : 참/거짓

      Ex) true, false

 

   4) object : 객체 타입

interface PersonType{
    name: string;
    age: number;
    isStudent: boolean;
    studentNum?: number;
}

const person:PersonType = {
    name: 'Alice',
    age: 24,
    isStudent: true,
}

      - 객체 타입을 따로 지정해줄 수 있습니다.

      - 타입 지정 시 '?' 를 사용해서 없어도 되는 타입을 추가해줄 수 있습니다.

 

   5) array : 배열 타입

const arr1:string[] = ['a', 'b', 'c']
const arr2:number[] = [1,2,3]
const arr3:(string|number)[] = ['a',10,'hello']

      - 원소타입[] 으로 타입을 지정해줄 수 있습니다.

      - 여러 타입이 배열 내에 들어가있다면 | 를 사용하여 여러 타입을 적을 수 있습니다.

 

   6) Tuple : 길이와 타입이 고정된 배열

const tup:[string,number,boolean] = ['hello',10,true]

      - 배열 내 원소마다 타입을 각자 지정해줍니다.

 

   7) Enum : 열거형 타입

enum BloodType {
    A, // 0
    B = 200, // 200
    O, // 201
    AB // 202
}

const myBloodType = BloodType.AB;
console.log(myBloodType) // 202

      - 이름이 있는 상수들이 열거되어있는 집합입니다.

      - 순서대로 0부터 숫자가 부여되어있으며, 원하는 숫자를 지정해줄 수 있습니다.

   

   8) any : 어떤 타입이든 할당 가능한 타입 - 사용하지 않는것이 좋습니다.

      - noImplicitAny : any 타입을 허용하지 않는 옵션으로, any 타입을 사용하면 오류가 납니다.

 

   9) void : 어떤 타입도 존재할 수 없음

      - 함수에서 리턴값이 없을때 사용합니다.

 

   10) never : 어떠한 값도 가질 수 없음, 공집합

      - 선언한 뒤 어떠한 값도 지정해 줄 수 없습니다.

      - 무한루프나 에러 등 종료될 수 없는 함수를 만들 때 사용합니다.

      - void 타입은 리턴값이 없을 뿐, 함수가 종료되지만 never는 종료 자체가 될 수 없습니다.

 

   11) null & undefined : 빈값, 정의되지 않은 값

      - strictNullCheck 옵션이 꺼져있으면 모든타입 변수의 하위타입으로 취급됩니다.

      - strictNullCheck 옵션이 켜져있는경우 일반적인 타입에 null과 undefined을 할당할 수 없게됩니다.

      - 이 경우 null | undefined로 해당 타입또한 선언해줘야 합니다.

      - 가급적이면 strictNullCheck 옵션을 true로 설정하는것을 추천합니다.

 

   12) symbol 타입

let sym1 = Symbol("hello")
let sym2 = Symbol("hello")

console.log(sym1) // hello
console.log(sym1==sym2) // false

      - ES6 에서 새롭게 추가된 타입으로, number나 string과 같은 기본 데이터 타입(원시타입)입니다

      - 변경 불가능한 유일한 값을 의미합니다.

      - 정의된 값이 같더라도 두 Symbol은 서로 다른 값 취급을 합니다.

      - object 타입과 함께 사용하여 object 타입의 key값 으로 적용할 수 있습니다.

 

   13) unknown 타입

// any = 타입 검사를 하지 않음 = 위험함
function upper_any (a:any) {
    return a.toUpperCase();
}

// unknown = 엄격한 타입 검사를 요구함 = 상대적으로 안전함
function upper_unknown(a:unknown) {
    if(typeof a=== 'string'){
        return a.toUpperCase();
    }
    return '문자열이 아닙니다.'
}

      - 말 그대로 알수없는 타입입니다.

      - 다른 타입이 들어올 수 있지만, 엄격한 타입 검사를 요구합니다.

      - 타입 특정 이전까지는 에러를 내주기때문에, any타입과 유사하지만, 훨신 안전합니다.

 

 

 

타입 추론

// 자동으로 타입을 추론해줍니다.
const obj = {
    name: 'Thomas',
    age: 15,
    subject:{
       math: 85,
       english: 88,
    }
}

   - 타입을 지정하지 않아도 타입스크립트에서 타입을 추론하여 지정해주는 것입니다.

   - 개발자가 수동적으로 지정해줘야할 타입의 수가 줄어들고, 코드의 전체적인 안정성이 늘어납니다.

   - 타입 추론 또한 정확하지는 않으므로 타입이 변할 수 있는 상황에서는 타입을 지정해주는 것이 좋습니다.

 

 

 

 

'타입스크립트' 카테고리의 다른 글

typescript - 시작 : typescript란?  (0) 2024.06.24