2025. 2. 4. 03:50ㆍ_Web/TypeScript
Number 와 number의 차이점
const [N, M]: number[] = input[0].split(" ").map(Number);
🚀 Number vs number 차이점
TypeScript에서 Number와 number는 다른 개념입니다.
구분Number (대문자)number (소문자)
종류 | JavaScript의 객체 타입 (객체 래퍼) | TypeScript의 기본 타입 (원시 타입) |
역할 | number 타입을 감싸는 객체 | 기본 숫자형 (primitive type) |
사용 예시 | const n = new Number(123); | const n: number = 123; |
주의점 | 객체로 생성되므로 성능 저하 가능 | 일반적인 숫자 처리 방식 |
1️⃣ Number (대문자) - JavaScript의 객체 타입
Number는 JavaScript의 내장 객체 (Object Wrapper) 입니다.
즉, 숫자 값을 감싸는 객체(Wrapper Object) 로 동작합니다.
⚠️ typeof num1 === "object"
→ Number 객체를 사용하면 원시 타입(number)이 아니라 객체가 됩니다.
객체이므로 toFixed(), toString() 같은 메서드를 사용할 수 있습니다.
하지만 객체는 원시 값보다 메모리를 더 많이 사용하고, 비교 시도할 때 문제가 발생할 수 있습니다.
→ new Number(123)은 객체이고, 123은 원시 값이므로 다릅니다.
2️⃣ number (소문자) - TypeScript의 기본 타입
number는 TypeScript의 기본 숫자 타입이며 JavaScript의 원시 타입(primitive type) 입니다.
✅ number는 객체가 아닌 원시 타입이므로 성능이 좋고 일반적인 연산에서 안전하게 사용할 수 있습니다.
3️⃣ 실전 적용: map(Number)의 의미
✔ Number는 map()에서 number로 변환하는 함수
- map(Number)에서 Number는 숫자로 변환하는 함수 역할을 합니다.
- 원래 map() 함수 내부에서 Number(x)를 실행하면, x를 숫자로 변환합니다.
✅ map(Number)를 사용하면 문자열 배열을 숫자 배열로 변환할 수 있습니다.
map(Number)는 map(x => Number(x))와 동일합니다.
🔥 최종 정리
구분Number (대문자, 객체 타입)number (소문자, 원시 타입)
역할 | 객체 래퍼 (Wrapper Object) | 기본 숫자 타입 (Primitive Type) |
사용법 | const n = new Number(123); | const n: number = 123; |
비교 | 객체(object)이므로 비교 시 다를 수 있음 | 숫자(number) 그대로 사용 가능 |
map()에서 사용 | map(Number)로 숫자 변환 가능 | map(x => Number(x))와 동일 |
🚀 결론
- Number는 객체 타입이라 직접 new Number()로 선언하지 않는 것이 좋습니다.
- number는 TypeScript에서 기본적으로 사용해야 하는 숫자 타입입니다.
- map(Number)는 문자열을 숫자로 변환하는 데 유용하게 사용됩니다.
✅ 따라서, const [N, M]: number[] = input[0].split(" ").map(Number); 코드는 숫자 배열로 변환하는 올바른 방식입니다! 🎯
이 글은 AI로 작성한 실험적인 글입니다.