TypeScript

typeScript 문법

에밀오구 2023. 8. 18. 17:28

열거형 타입(Enum Type) 

타입스크립트에서는 특정 값의 집합을 정의할 때 사용됩니다. 종류로 문자형 열거형과 숫자형 열거형을 지원합니다.  디폴트 값으로 숫자형을 사용하며, 각 값은 자동으로 0부터 시작하여 1씩 증가합니다.  또 숫자형 열거형은 값을 통해 키를 얻을 수 있는 역 매핑 기능이 있습니다. 

//숫자 열거형 
enum Color
  Red, //값을 지정하지 않으면 자동으로 0 부터 시작해 1씩 증가합니다.
  Green, //1  
  Blue=4,
}
//문자 열거형
enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT",
}

//숫자형만 존재하는 역 매핑 Reverse mapping
enum Enum {
A
}
let a = Enum.A;
let nameOfA = Enum[a]; //"A"

타입가드 Type Guard

typeof 와 instanceof를 사용하면 ts 는 해당 조건문 블록에 해당 변수의 타입이 다르다는 걸 이해할 수 있습니다.  typof 는 데이터 타입을 반환하고 instanceof는 불리언을 반환합니다. 

  • typeof 의 경우 primivite type을 구분할때 사용
  • instanceof 의 경우 class, array,object 를 구분할 때 활용 
function doSometing(x: number|string){
if(typeof x ==="string"){
return x.length;
}
return 1+x;
}

인터페이스(Interface)

interface User {
name : string,
age: number,
}

const eunhee :User ={
name: "lee",
age:1000
}

*Interface 선언시 이름은 대문자로 시작해야합니다. ex> User

//선택적 속성 -? 
Interface User{
readonly Name :string , // 재할당이 안된다.
isValid?:boolean // 명시해도 되고 안해도 상관없다.
}

호출 시그니처 call signature :  함수 모양을 인터페이스로 정의한 것

Interface GetName {
(Message:string):string
}
파라미터 네이밍은 상관없지만 갯수는 상관ㅇ
getName :(message:string)=>string

인덱싱 기능 타입 

Interface Fruits {
[item: number]:string
}
Const fruits:Fruits =[“apple”]

Interface User{
[key:string]:unknown
Name: string
Age:number
}

Const her :User ={
Name: “her”
Age:21
}
her[“”isValid”]=true

인덱싱 기능 타입으로 타입 생성안하면 대괄호 표기법으로 추가 못함
대괄호 방식으로 인덱스 기능/조회/추가을 할 수 있다. 

동일한 이름으로 인터페이스를 만드는 게 가능
+ 가 되는 데 기존 타입은 그대로 작성해야함