-
타입스크립트 타입 추론과 타입 단언에 대해 공부했습니다.
inference : 타입 추론으로서 타입을 따로 지정해주지 않아도 타입스크립트에서 똑똑하게 타입을 추론해줍니다.
// Type Inference // 타입을 명시하지 않아도 처음 생성시 문자열로 생성이 되어 string으로 타입 추론이 됩니다. let string = 'We are the world!'; string = 100 // 문자열 타입에 숫자를 할당하여 오류가 발생합니다. // 함수의 인자도 마찬가지로 기본값 매개변수가 숫자라면 숫자로 선언됩니다. function write(number = 1000) { return number; // 1000 } write('number'); // 숫자가 아닌 문자열을 넣으면 오류가 발생합니다.
assertion : 타입 단언으로서 타입을 강제로 강요하여 선언합니다. (타입을 확신할때 사용)
// Type Assertion let anything; // 타입 추론에 의해 any로 선언됩니다. anything = 100; anything = 'baby' let anything2 = anything // anything2는 anything과 같은 any 타입입니다. let anything2 = 10; // any 타입이어서 10으로 변화합니다. let anything3 = anything as string; // string으로 타입 단언을 해줍니다. anything3 = 100; // 문자열로 단언하여 숫자를 할당하니까 오류가 발생합니다.
타입 단언에는 DOM에 접근할때 자주 사용됩니다.
// 버튼이 있다면 버튼에 접근하지만 버튼이 없다면 null 이 됩니다. (오류발생 가능성) const button = document.querySelector('button'); // 그렇기 때문에 타입 단언으로 HTMLButtonElement 타입으로 강제로 선언해줍니다. const button = document.querySelector('button') as HTMLButtonElement; // 이렇게도 단언해줄 수 있습니다 (값이 무조건 있다고 확신하는 방법) const button = document.querySelector('button')!; // 끝에 ! 느낌표를 붙혀줍니다.
타입 단언에서 !는 무조건 이 요소는 존재한다고 확신할때 사용합니다.
타입 추론 같은 경우는 코드를 깔끔하게 만들고 싶을 때 유용할 수 있겠지만
타입을 정확히 명시하는 것이 코드를 보며 타입을 바로바로 확인하기 편할 것 같다는 생각이 듭니다.
타입 단언은 해당 타입이 정말 무조건 확신이 있을때가 아니라면 굳이 자주 사용하진 않을 것 같습니다.
'코딩 기록 > 타입스크립트' 카테고리의 다른 글
(TypeScript) 타입스크립트 스택(Stack, LIFO) 자료구조 구현 (2) 2021.03.04 (TypeScript) 타입스크립트 interface와 Type Alias(타입 별칭) (0) 2021.03.04 (TypeScript) 타입스크립트 Intersection Type(인터섹션 타입) (0) 2021.03.04 (TypeScript) 타입스크립트 Union Type(유니온 타입) (0) 2021.03.04 (TypeScript) 타입스크립트 Enum Type(열거형 타입) (0) 2021.01.26 댓글