Typescript - 타입

박춘화·2021년 10월 25일
0

Typescript

목록 보기
1/1
post-thumbnail

핵심 타입

  • number : 모든 숫자(integer, float)

    const myNumber: number = 1;
  • string : 모든 문자열

    const myString: string = 'Hello, typescript!'
  • boolean : true/false

    const myBoolean: boolean = true;
  • object : 자바스크립트 객체({ key : value })

    const myIntroduction: {
        name : string;
        age : number;
    } = {
        name : 'winters',
        age : 29
    }
  • Array : 배열(엘리먼트의 종류에 따라 제약이 있을 수 있다.)

    // 배열 요소 뒤에 []를 추가
    const myStrings: string[] = ['Hello', 'Typescript'];
    
    // 제네릭 배열 타입
    const myNumbers: Array<number> = [1, 2, 3];
  • Tuple : 요소의 타입과 길이가 고정된 배열

    const myTuple: [string, number] = ['Hello, typescript!', 123];
  • Enum : 순서를 가지는 일련의 값

    enum isDeveloper {yes, no}
    const AreYouDeveloper: isDeveloper = isDeveloper.yes;
  • Any : 모든 타입(별도의 타입을 지정하지 않으면 any로 지정)

  • Void : 존재하지 않는 타입(any의 반대). 주로 함수에서 반환값이 없는 경우에 반환 타입을 표시하기 위해 사용
    void를 타입 변수로 사용하는 것은 유용하지 않은데, 그 이유는 할당할 수 있는 값이 null(--strictNullChecks를 사용하지 않을 때) 또는 undefined 뿐이기 때문

    const printText: (text: string) => void = (text) => {
        console.log(text)
    }
  • Null & Undefined : nullundefined 둘 다 자신의 타입을 이름으로 사용하며, 기본적으로 다른 모든 타입의 하위 타입
    --strictNullChecks를 사용하면 nullundefined는 각각 자신이나 any 타입에만 할당 가능

  • Never : 절대 발생할 수 없는 타입으로 함수 표현식이나 화살표 함수 표현식에서 항상 오류를 발생시키거나 절대 반환하지 않는 반환 타입으로 사용

    // never를 반환하는 함수는 함수의 마지막에 도달할 수 없음
    function error(message: string): never {
        throw new Error(message);
    }
    
    // 반환 타입이 never로 추론
    function fail() {
        return error("Something failed");
    }
    
    // never를 반환하는 함수는 함수의 마지막에 도달할 수 없음
    function infiniteLoop(): never {
        while (true) {
        }
    }

Javascript vs Typescript

Javascript - dynamic types(런타임 시에 결정)

const add = function(n1, n2) {
    if (typeof n1 !== 'number' || typeof n2 !== 'number') {
        throw new Error('Incorrect input!')
    }
    return n1 + n2;
}

const number1 = 5;
const number2 = 2.8;

const result = add(number1, number2);
console.log(result); // 7.8

Typescript - static types(컴파일 과정에서 확인)

const add = function(n1: number, n2: number) {
    return n1 + n2;
}

const number1 = 5;
const number2 = 2.8;

const result = add(number1, number2);
console.log(result); // 7.8

타입 단언(Type assertion)

개발자가 컴파일러에게 값의 타입을 실제 타입으로 정의하는 방법으로 값에 정의된 타입보다 실제 타입이 더 구체적일 경우에 사용

// Angle-bracket
let text: any = "Hello, typescript!";
let textLength: number = (<string>text).length;
 
// as
let text: any = "Hello, typescript!";
let textLength: number = (text as string).length;

참고자료

profile
함께 성장하는 개발자

0개의 댓글