4/29(금) 오늘의 개발일기

길고 꾸준하게·2022년 4월 29일
0

TypeScript퍼먹기

목록 보기
1/6
post-thumbnail

와우.. 마지막 일기가 정확히 1주일 전이었다니.. 방송대 과제도 부랴부랴하고 몸도 아프고 해서인지 시간이 이렇게 빨리가는줄은 몰랐다..
현재 넷플릭스 클로닝을 다 마치고 TypeScript에 대해서 베이직하게 배우고있다. 사실 넷플릭스는 클로닝은 TypeScript를 이용한 프로젝트긴 했지만 '느낌'상으로만 알고 넘어간부분이라. 정확하게 TypeScript만을 콕 찝어서 배우고싶었다.

타입추론

JavaScript는 기본적으로 mutability(변경가능성)이 기본인 언어다.
이는 컴파일단계에서는 편하게 개발할수있겠지만 그 편안함이 런타임단계에서 스노우볼이 굴러 뻥!하고 터질수있다.

const str = 'test';
const mutable = str + true //'testtrue'

이렇게 원래는 값은 데이터타입만 연산이 가능해야하는데 JavaScript는 개발자를 너무 좋아해서 오류메세지를 내고싶지 않아한다 => 그래서 string+boolean인데 string이 되버린것;
이러한 문제는 나도 많이느꼇다. 일단 아무문제없이 동작은되니까 정상적으로 코드를 잘 짯다고 생각했는데 런타임단계에서 테스트해보면 데이터타입이 꼬인경우가 종종있었다.
TypeScript는 타입지정을통해 이러한 문제를 코드를 짜는시점에서 잡아주니까 좋았다.

변수선언시에는 타입지정이 필수는 아니었다. TypeScript가 자체적으로 타입추론을통해 지정해주니까.

let strArray = ['a','b','c']
strArray[0] = 1
// error 타입추론을 통해 string[] 지정됬고, number가 들어오려하니 컴파일단계에서 error처리를 함

타입 몇가지

  • Tuple
const [string,number,boolean] = ['KIM',13,true]

타입이 믹스된느낌. 하지만 순서는 중요하다

  • void
function Void():void{
	console.log('vooooid')
}

return문이 없거나 명시적으로 return하는 값이 없을때 붙는 타입. 하지만 TypeScript가 타입추론을 통해 void타입명시를 안해줘도 알아서 해준다.

  • Never
    void랑 비슷한건가? 하고 잘 이해못했던 타입. 실제로 잘 쓰지않는다고는 하나 알아둬야지..
    '값을 아예 반환하지않음'이 정의고 예외를 던지거나(throw) 프로그램실행을 종료를 의미한다.

다음은 TypeScript 함수로 글써야지..

profile
작은 나의 개발 일기장

0개의 댓글