string과 String

Yun·2024년 7월 7일
0

문제해결

목록 보기
2/2
'String' 형식은 'string' 형식에 할당할 수 없습니다.
 string'은(는) 기본 개체이지만 'String'은(는) 래퍼 개체입니다. 가능한 경우 'string'을(를) 사용하세요.

String과 string은 다른가?

결론은: 다르다!
타입스크립트는 stringString 타입을 구분한다.

Primitive Type

원시 타입(Primitive Type)은 가장 기본적인 데이터 타입이다. 자바스크립트에는 number, bigint, boolean, null, undefined, symbol이 있다. 메서드를 가지지 않는다는 특징이 있다.

let str: string = "Hello";
console.log(str.toUpperCase());
// 자바스크립트가 임시로 String 객체를 생성하여 메서드 호출한다.

Reference Type

참조 타입(Reference Type)은 복합적인 데이터 구조를 가진다. 실제 값을 저장하지 않고, 값이 저장된 메모리 주소를 저장한다. array, function, object 등이 있으며, 동일한 객체를 여러 변수에서 참조할 수 있다. 원시 타입과 달리 메서드를 가질 수 있다.

래퍼 객체(Wrapper Object)는 원시 값을 객체처럼 다룰 수 있게 해주는 객체 타입이다. 자바스크립트에서는 각 원시 타입에 대응하는 래퍼 객체가 있다.

  • string -> String
  • number -> Number
  • boolean -> Boolean
let primitiveString: string = "Hello"; // 원시 타입
let wrappedString: String = new String("Hello"); // 래퍼 객체

console.log(typeof primitiveString); // "string"
console.log(typeof wrappedString); // "object"

console.log(primitiveString === "Hello"); // true
console.log(wrappedString === "Hello"); // false
console.log(wrappedString == "Hello"); // true (타입 강제 변환)

console.log(primitiveString.length); // 5
console.log(wrappedString.length); // 5

string

string은 기본 문자열 타입이다. 원시 타입(primitive type)으로, 문자열 값을 나타낸다.

let myString: string = "Hello";

String

String은 객체 타입이다. 문자열 값을 감싸는 래퍼 객체이기도 하다.

let myString: String = new String("Hello");

결론

string이 더 가볍고 성능 면에서 유리하다. String 객체는 불필요한 오버헤드를 추가할 수 있기 때문에 단순히 값을 저장할 때는 적합하지 않다. 특별한 이유가 없다면 string을 사용하자.

0개의 댓글