TypeScript에는 객체 유형을 정의할 때 'Object', '{}', 'object'와 같은 몇 가지 간결한 옵션이 있습니다. 이들의 차이점은 무엇인가요?
객체(대문자)는 모든 JavaScipt 객체에 공통적인 속성을 설명합니다. TypeScript 라이브러리와 함께 제공되는 lib.es5.d.ts 파일에 정의되어 있습니다.
보시다시피 여기에는 toString(), valueOf() 등과 같은 몇 가지 공통 속성이 포함되어 있습니다.
자바스크립트 객체에 공통적인 속성만 강조하기 때문입니다. 따라서 문자열, 부울, 숫자, bigint, 기호와 같은 상자형 개체를 할당할 수 있지만 그 반대는 할 수 없습니다.
{}는 자체 멤버가 없는 객체를 설명합니다. 즉, 해당 속성 멤버에 액세스하려고 하면 TypeScript가 오류를 표시합니다.
위의 코드 예시에서 {}와 Object(대문자)가 동일한 기능을 가지고 있음을 알 수 있습니다. 즉, 공통 속성에만 액세스할 수 있으며(JavaScript 코드 논리가 올바른 경우에도) 모든 boxable 객체를 여기에 할당할 수 있습니다.
그 이유는 {} 유형이 프로토타입 체인을 통해 이러한 공통 속성에 액세스할 수 있고 자체 속성도 없기 때문입니다. 따라서 Object(대문자) 유형과 동일하게 동작합니다. 하지만 서로 다른 개념을 나타냅니다.
객체(소문자)는 다음과 같은 코드로 표현되는 비원시 유형을 의미합니다.
type PrimitiveType = | undefined | null | string | number | boolean | bigint | symbol; type NonPrimitiveType = object;
이는 기본이 아닌 모든 유형을 할당할 수 없으며 그 반대의 경우도 마찬가지라는 의미입니다.
많은 일반 라이브러리의 소스 코드에서 Record
제 콘텐츠가 도움이 되셨다면 구독을 고려해 보세요. 저는 _ 매주 일요일마다 최신 웹 개발 소식이 담긴 주간 뉴스레터 _ 를 보냅니다. 여러분의 지원에 감사드립니다!
위 내용은 TypeScript에서 Object, {} 및 object의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!