본문 바로가기
TypeScript

[TypeScript] Types (타입 선언)

by 박헹구 2022. 1. 10.
반응형

 

type    
number 1, 5.3, -10 모든 숫자, 소수
string "hi", `hi`, 'hi' 모든 문자열
boolean true, false 오직 두가지 참 or 거짓값
object {age: 30} JavaScript 객체, 더 구체적인 types이 가능하다.
Array [1, 2, 3] JavaScript 배열, 모든 type은 flexible하거나 strcit할 수 있습니다. 
Tuple [1, 2] added by typescript : fixed-length array
Enum enum{NEW, OLD} Added by TypeScript: Automatically enumerated flobal constant identifiers
Any * Any kind of value, no specific type assignment
unknown    
void    
never    
tuple    

Any는 다양하게 쓰고 편하지만 기본적으로 TypeScript의 모든 장점을 없애기 때문에 가능한 쓰지 않는 것이 좋다.

 

any와 unknown 두 타입 모두 타입을 지정하기 애매한 경우에 사용하지만 unknown을 사용하는 경우 컴파일 에러가 발생하지만 any는 타입을 지정하지 않은 것과 마찬가지이기 때문에 컴파일 오류가 나지 않는다. 

 

그리하여 any보다는 unknown을 사용하는 것이 typeScript를 사용할 때 조금 더 안전하다. 

• Tuple Type

자바스크립트에는 없음.

고정길이배열 고정유형

const person: {
    name: string;
    age: number;
hobbies: string[];
role: [number, string];} = {
    name: 'hyemgu',
    age: 30,
    hobbies: ['Sports', 'Cooking'],
    role: [2, 'author']
};

 

Union Type

유니온 타입은 | 연산자를 사용하여 아래와 같이 input1은 number or string이라는 의미다. 

function combine(input1: number|string , input2: number|string) {
    let result;
    if(typeof input1 ==='number' && typeof input2 ==='number'){
     result = input1 + input2;
    }else {
        result = input1.toString() + input2.toString();
    }
    return result;
}
const combinedAges = combine(30, 26);

const combinedNames = combine('Max', 'Anna');


console.log(combinedAges);
console.log(combinedNames);

리터럴타입

리터럴 타입은 집합 타입보다 구체적인 하위 타입이다. 

유니온타입과 결합하여서 사용 할 수 있으며 아래처럼 문자열 리터럴 타입(String Literal Types) 처럼 사용가능하다. 

  resultType: 'as-number' | 'as-text') //유니온타입과 리터럴타입의 결합

 AliasType

타입 별칭을 사용하여 타입을 직접 생성 할 수 있게 해준다.. 유니온 타입을 저장하는 것 뿐만 아니라 복잡할 수 있는 객체 타입에도 별칭을 붙일 수 있다.

 

type User = { name: string; age: number };
const u1: User = { name: 'Max', age: 30 };

타입 별칭을 사용하면 불필요한 반복을 피하고 타입을 중심에서 관리할 수 있습니다.

예를 들어, 다음 코드를 아래와 같이 단순화할 수 있습니다.

function greet(user: { name: string; age: number }) {
console.log('Hi, I am ' + user.name);
}
 
function isOlder(user: { name: string; age: number }, checkAge: number) {
return checkAge > user.age;
}

이것을 단순화 시키면 

type User = { name: string; age: number };
 
function greet(user: User) {
console.log('Hi, I am ' + user.name);
}
 
function isOlder(user: User, checkAge: number) {
return checkAge > user.age;
}

 

 

 

 

반응형

'TypeScript' 카테고리의 다른 글

[TypeScript] 타입스크립트에 대해서 알아보자  (0) 2021.07.29

댓글