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

王林
풀어 주다: 2024-07-24 15:52:30
원래의
1314명이 탐색했습니다.

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를 볼 수 있습니다. 기본이 아닌 유형을 나타냅니다. 객체(소문자)와 동일한 효과를 가지지만 더 의미가 있습니다.


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

위 내용은 TypeScript에서 &#Object&#, &#{}&# 및 &#object&#의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿