TypeScript의 인터페이스에 맞게 객체를 어떻게 줄일 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-11-01 03:58:02
원래의
614명이 탐색했습니다.

How can we reduce an object to conform to an interface in TypeScript?

인터페이스 적합성을 위한 객체 감소

TypeScript에서 인터페이스는 객체의 속성에 대한 계약을 정의하고 클래스는 해당 인터페이스를 구현합니다. 그러나 객체를 JSON으로 변환하는 JSON.stringify()와 같은 도구를 사용할 때 인터페이스에 정의된 것 이상의 추가 속성이 있는 객체를 만나는 것이 일반적입니다.

이 문제를 해결하려면 다음을 줄여야 합니다. 구현하는 인터페이스의 속성만 포함하는 객체입니다.

문제:

JSON.stringify()를 사용하여 추가 속성이 있는 객체를 JSON으로 변환하려고 시도하면 추가 속성이 출력에 포함되어 잠재적으로 JSON이 무효화됩니다.

해결책 1:

TypeScript 인터페이스에는 런타임 표현이 없으므로 속성 제한을 적용하는 데 사용할 수 없으므로 해결 방법이 필요합니다. 인터페이스를 클래스로 정의하면 Lodash와 같은 라이브러리를 사용하여 대상 개체에서 인터페이스에 정의된 속성만 선택할 수 있습니다.

예:

<code class="typescript">import _ from 'lodash';

const reducedObj = new MyInterface();
_.assign(reducedObj, _.pick(originalObj, _.keys(reducedObj)));</code>
로그인 후 복사

이 방법은 다음을 보장합니다. 축소된 객체에는 인터페이스에 정의된 속성만 포함되어 있습니다.

해결책 2:

또 다른 접근 방식으로 대상 개체의 속성을 수동으로 반복하여 각 속성이 인터페이스 정의에 존재하는지 확인할 수 있습니다. 그렇다면 속성이 축소된 개체에 추가됩니다. 이 방법을 사용하려면 의도하지 않은 속성을 추가하지 않도록 세심한 주의가 필요합니다.

JavaScript에서 TypeScript 인터페이스와의 속성 적합성을 강제할 직접적인 방법은 없지만 이러한 해결 방법은 인터페이스 정의에 맞게 객체를 줄이는 실용적인 솔루션을 제공합니다.

위 내용은 TypeScript의 인터페이스에 맞게 객체를 어떻게 줄일 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!