TypeScript #1

gyunho·2023년 5월 7일

헐레벌떡 TypeScript

목록 보기
1/2

TypeScript


  • 타입스크립트는 자바스크립트와 비슷하지만 타입을 설정해준다는 것에 차이가 있다,

타입 지정

  • 타입을 지정할때는 첫글자를 대문자로 해준다.
  • 타입스크립트는 타입의 안정성을 보장해주기 때문에 유용하다.
    그런데 그렇다고 내가 모든 것들에 대해 타입을 지정해주는 것은 바람직하지 않다.
    타입스크립트는 충분히 똑똑하기 때문에 내가 적은 것들에 대해 타입스크립트가 유추하도록 하는게 바람직하다.
    • 물론 구체적으로 타입을 지정하고 싶을땐 지정하는게 맞지


Type checker


  • 컴파일러와는 살짝 다른 개념으로 코드가 실행되기 전 오류를 잡아준다. 그래서 런타임오류를 예방할 수 있다.
  • 주로 Type 오류를 잡는데 사용된다.



Alias


  • 타입에 별명을 붙여주는 애라고 한다.

  • 정확한 의미는 모르겠지만 다음과 같이 사용된다.

    Player는 Object인데 속성값으로 string타입의 name과 number | undefined타입의 age를 갖는다.

  • 타입의 묶음이라고 생각하면 쉬울것 같다.

  • 저기서 ? 의 의미는 number | undefined와 같다. number이거나 지정되지 않는 값이라는 거다. 쉽게 말해 없어도 되는 것.



Function type & return type


  • 함수의 타입은 위와 같이 지정된다. :Player가 반환형태이고 :string처럼 인자의 형태까지 지정할 수 있다.
  • 여기서 void라는 개념이 나오는데 이는 우리가 C와 C++에서 배운 void와 같은 의미로 반환을 하지 않겠다는 것이다.

  • 화살표함수는 이렇게 사용한다.



Readonly & Tuple


Readonly

  • readonly는 말그대로 읽기 전용이다. 값을 수정할 수 없다는 것을 타입으로 지정하는 것이다.
  • 따라서 push()같은 배열을 수정하는 것은 불가능하고 map()같은 것은 값을 수정하는 것이 아니기에 가능하다.

Tuple

  • 순서를 정하는 것이다. 저 순서의 타입이 아니라면 오류를 발생한다.
  • 위의 사진에서는 string에 number을 대입하려해서 발생하는 오류이다.



Any


- 이는 JavaScript의 타입을 사용한다는 의미이다.

  • a와 b라는 변수에 각각 배열과 boolean값을 넣어주었음에도 a+b가 오류를 발생시키지 않는다. 이는 자바스크립트와 같다.



void & unknown & never


void

  • 아까 function type에서 설명했듯이 C와 C++에서의 void와 의미가 일맥상통한다.
  • 타입스크립트에서는 함수가 값을 반환하지 않으면 자동으로 void형테가 된다.

unknown

  • unknown은 아직 타입이 정해지지 않은 상태를 말한다. 그렇기 때문에 함수로 다른 타입과 연산을 진행할 수 없다.
  • if문을 이용하여 타입을 확인하면 그 타입에 맞는 연산을 진행할 수 있다.

never

  1. never은 오류를 발생시킬때 주로 쓴다.
  2. 일어날 수 없는 것에 대한 형태를 뜻한다. 그래서 위의 함수에서 name은 string|number인데 ifelse if에서 두 타입을 모두 확인했으므로 다른 경우의 수는 존재하지 않는다. 그래서 나머지 else의 타입은 never이다.



profile
복습용

0개의 댓글