typescript 기초 정리 - 5

천재가되고싶다·2024년 5월 16일
0

타입스크립트 문법 정리

1) 타입가드는 타입추론을 명확하게 하기 위해 사용한다. 심화) 타입추론을 위해 is문법을 사용 할 수있다.

interface A = {a: string}
interface B = {b: string}

const a:A | B = {a: "a"}

// 타입 A인지 판단해보겠다.
const aOrB = (parameter:A | B): parameter is A => {
	//해당 객체가 b라는 속성을 가지고 있냐?
    //가지고 있으면 B타입이라는 말니까 false
    //그외에는 A라는 타입이니까 true
	if((parameter as A).b) {
    	return false
    } else {
    	return true
    }
}

const printAOrB = (parameter: A | B):void => {
	if(aOrB(a)) {
    	console.log("a입니다.")
    } else {
    	console.log("b입니다.")
    }
}

2) {},Object,object 그리고 unknown

내가 지금 강의를 듣고잇는 타입스크립트 4.8v 기준으로 새로 생긴 개념들이라고 한다.

{}Object의 경우는 null,undifined를 제외한 모든타입이다.
any보단 낫지만 지양하는게 좋을듯?

주의해야할게 object <<가 객체 타입이고 Object{}는 객체 타입을 뜻하는게 아니다!
그리고 unknown의 경우는 원래는 단일타입이었지만 4.8기준으로

unknown === {} | null | undifined

if(a) {
	a << {}
} else {
	a << null or undifined
}

3) 인덱스 시그니처와 맵드 타일

  • 인덱스 시그니처란?

어떤 객체가 있다고 가정하다. 해당 객체의 key,value들의 타입은 서로 같지만
그 key,value가 무수히 많다고 생각하면 일일이 타입을 지정하는것은 끔찍한 일이다.
그럴때 사용하는것이 인덱스 시그니처이다.

type A = {
	[key:string]: number
}

or

interface A {
	[key:string]: number
}

const a:A = {a: 5, b: 6, c: 7} ok.
  • 맵드 타일이란?

어떤 객체의 key를 텍스트 리터럴 타입으로 지정해줄수 있다.
이때 이용하는것이 맵드 타일이다.

type A = "a" | "b" | "c"
type B = {
	[key in A]:A //이러면 키밸류 타입이 a가된다. 밸류 타입을 직접 지정해주고싶으면 value타입만 적으면 됨
}

or

interface IA = {
	types:"a" | "b" | "c"
}
type B = {
	[key in IA["types"]:IA[types]
}


0개의 댓글