const str = `hello_world-friend`.replace(
/(_|-)/g,
(item) => {
return `${item}${item}${item}`
}
}
type MyType<T> = T extends infer R ? R : null;
TypeScript
복사
•
Conditional type 에서만 사용할 수 있는 키워드로 간단하게 말하면 찾은걸 그대로 사용하게 만들어주는 역할.
•
replace에서 2번째 파라미터인 함수의 item과 비슷함, 내가 만든걸 instanciate 후 사용하게 해주는 그것.
Conditional type
type result = true extends boolean ? 1 : 0 // 1
TypeScript
복사
•
타입의 true가 boolean일 경우 1
•
Conditional type은 삼항 연산자 밖에 없다. → switch 만들어조
const func = (check:boolean) => {
return 1234;
}
type FuncResult = typeof func extends (...args:any) => any ? 1 : 0 // 1
TypeScript
복사
•
func가(extends) (…args:any) ⇒ any인 경우 타입은 1이다로 해석될 수 있음
Return type
type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;
TypeScript
복사
•
맨위의 .replace 메서드를 이용한 설명과 같이 infer는 값을 변수화 하는 키워드라 생각하면 된다.