String.prototype.repeat()
- 문자를 반복해서 새로운 문자열을 반환
'안녕'.repeat(3); //안녕안녕안녕
TypeScript Narrowing
- 타입을 좁혀 주어 더 안정적으로 코드를 체크할 수 있도록 하는 방법 공식 문서에 다음과 같은 예제가 있다.
function padLeft(padding: number | string, input: string) {
return " ".repeat(padding) + input;
}
위 코드에서 repeat
안에 있는 padding
은 다음과 같은 타입 에러가 발생한다.
‘string | number’ 형식의 인수는 ‘number’ 형식의 매개 변수에 할당될 수 없습니다. ‘string’ 형식은 ‘number’ 형식에 할당할 수 없습니다.ts(2345)
padding
은 number
와 string
인 유니언 타입
으로 선언되었기 때문에 될 것 같지만, repeat안의 padding은 항상 number
만 와야 하기 때문에 에러가 발생하는 것이다. 따라서 아래 코드와 같이 타입을 좁혀주면 에러가 발생하지 않는다.
function padLeft(padding: number | string, input: string) {
if (typeof padding === "number") {
return " ".repeat(padding) + input;
}
return padding + input;
}
typeof
를 사용해서 padding
이 number
일 때만 " ".repeat(padding) + input
을 리턴하게 하면 padding
은 number
타입으로 정의되고 그 이후에 나오는 padding + input
부분의 타입은 string
으로 정의된다.
typeof
로 type 지키기
typeof
가 리턴값으로 가질 수 있는 타입- “string”
- “number”
- “bigint”
- “boolean”
- “symbol”
- “undefined”
- “object”
- “function”