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
인덱싱 기능 타입으로 타입 생성안하면 대괄호 표기법으로 추가 못함
대괄호 방식으로 인덱스 기능/조회/추가을 할 수 있다.
동일한 이름으로 인터페이스를 만드는 게 가능
+ 가 되는 데 기존 타입은 그대로 작성해야함