다음은 질문 형식으로 된 몇 가지 제목 옵션입니다. 유형 안전에 중점을 둡니다. * TypeScript가 Array.prototype.includes() 유형 인수를 제한하는 이유는 무엇입니까? * Array.prototype.includes()를 어떻게 사용할 수 있나요?

Barbara Streisand
풀어 주다: 2024-10-26 22:04:03
원래의
825명이 탐색했습니다.

Here are a few title options, all in the question format:

Focus on Type Safety:

* Why Does TypeScript Restrict Array.prototype.includes() Type Arguments? 
* How Can I Use Array.prototype.includes() With Supertypes in TypeScript?
* TypeScript Type Safety

유형 시스템 및 Array.prototype.includes()

TypeScript는 유형 안전성을 강화하므로 Array와 같은 기능을 사용할 때 오류가 발생할 수 있습니다. 프로토타입.include(). 이 함수는 searchElement 인수가 배열 요소와 동일한 유형을 가질 것으로 예상합니다. 그러나 특정 시나리오에서는 입력의 유형이 다를 수 있으므로 유형 인수가 제한되는 이유에 대한 의문이 제기됩니다.

TypeScript 라이브러리는 searchElement 매개변수가 배열 요소와 일치하도록 엄격하게 유형이 지정되었다고 가정합니다. 이 가정은 대부분의 경우에 적용되지만 상위 유형을 처리할 때는 문제가 될 수 있습니다. 이러한 경우 상위 유형을 허용하기 위해 표준 TypeScript 선언을 재정의해야 할 수도 있습니다.

Array.prototype.includes() 재정의

한 가지 접근 방식은 로컬에서 선언 병합을 통한 표준 라이브러리 선언. TypeScript에는 상위 유형 제약 조건이 없으므로 조건부 유형을 사용하여 이를 에뮬레이트합니다.

<code class="typescript">declare global {
  interface Array<T> {
    includes<U extends (T extends U ? unknown : never)>(
      searchElement: U,
      fromIndex?: number
    ): boolean;
  }
}</code>
로그인 후 복사

이 선언을 사용하면 원본 코드가 오류 없이 작동합니다.

<code class="typescript">if (exampleArr.includes(e.key)) {} // okay</code>
로그인 후 복사

배열 유형 확대

exampleArr의 유형을 읽기 전용 string[]으로 확장하는 것이 더 간단한 해결책입니다:

<code class="typescript">const stringArr: readonly string[] = exampleArr; // no assertion

if (stringArr.includes(e.key)) {} // okay</code>
로그인 후 복사

읽기 전용 string[]으로 확장하면 입력이 손상되지 않고 다른 유형을 가질 수 있습니다. 유형 안전. 대조적으로, string[]으로 확장하는 것은 TypeScript의 배열 공분산에 대한 불건전한 처리로 인해 잠재적으로 안전하지 않을 수 있습니다.

위 내용은 다음은 질문 형식으로 된 몇 가지 제목 옵션입니다. 유형 안전에 중점을 둡니다. * TypeScript가 Array.prototype.includes() 유형 인수를 제한하는 이유는 무엇입니까? * Array.prototype.includes()를 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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