"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > TypeScript에서 &#Object&#, &#{}&# 및 &#object&#의 차이점

TypeScript에서 &#Object&#, &#{}&# 및 &#object&#의 차이점

2024-07-30에 게시됨
검색:838

TypeScript에는 객체 유형을 정의할 때 'Object', '{}', 'object'와 같은 몇 가지 간결한 옵션이 있습니다. 둘 사이의 차이점은 무엇인가요?

객체(대문자)

객체(대문자)는 모든 JavaScipt 객체에 공통적인 속성을 설명합니다. 이는 TypeScript 라이브러리와 함께 제공되는 lib.es5.d.ts 파일에 정의되어 있습니다.

The Differences Between

보시다시피 여기에는 toString(), valueOf() 등과 같은 몇 가지 공통 속성이 포함되어 있습니다.

자바스크립트 객체에 공통적인 속성만 강조하기 때문입니다. 따라서 문자열, 부울, 숫자, bigint, 기호와 같은 상자형 개체를 할당할 수 있지만 그 반대는 할 수 없습니다.

The Differences Between

{}

{}는 자체 멤버가 없는 객체를 설명합니다. 즉, 해당 속성 멤버에 액세스하려고 하면 TypeScript가 오류를 표시합니다.

The Differences Between

위의 코드 예시에서 {}와 Object(대문자)가 동일한 기능을 가지고 있음을 알 수 있습니다. 즉, 공통 속성에만 액세스할 수 있으며(JavaScript 코드 논리가 올바른 경우에도) 모든 boxable 객체를 여기에 할당할 수 있습니다.

그 이유는 {} 유형이 프로토타입 체인을 통해 이러한 공통 속성에 액세스할 수 있고 자체 속성도 없기 때문입니다. 따라서 Object(대문자) 유형과 동일하게 동작합니다. 그러나 그들은 서로 다른 개념을 나타냅니다.

객체(소문자)

객체(소문자)는 다음과 같은 코드로 표현되는 기본이 아닌 유형을 의미합니다.

type PrimitiveType =
  | undefined
  | null
  | string
  | number
  | boolean
  | bigint
  | symbol;

type NonPrimitiveType = object;

이는 기본이 아닌 모든 유형을 할당할 수 없으며 그 반대의 경우도 마찬가지라는 의미입니다.

The Differences Between

간식: 녹음

많은 일반 라이브러리의 소스 코드에서 비원시 유형을 나타내는 Record를 볼 수 있습니다. 객체(소문자)와 동일한 효과를 가지지만 더 의미가 있습니다.


제 콘텐츠가 도움이 되셨다면 구독을 고려해 보세요. 저는 최신 웹 개발 업데이트가 포함된 _ 주간 뉴스레터를 매주 일요일 _ 보냅니다. 여러분의 지원에 감사드립니다!

릴리스 선언문 이 글은 https://dev.to/zacharylee/the-differences-between-object-and-object-in-typescript-f6f?1에서 복제됩니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다. 그것
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3