일반 나머지 유형으로 유형을 생성할 수 있습니까?

파블로

유형 간 선택 생성에 대한 질문에 따라 인터페이스에서 인덱스 유형 선택 정의

이제 일련의 요소를 만들어야 합니다. 일반적으로 다음과 같이 작성할 수 있습니다 element1 & element2. 그러나 XSD 스키마를 변환하는 중이므로 새로운 TypeScript 개발자가 무엇과 혼동하지 않도록 1:1 일치를 원합니다. 진행되고있다.

현재 나는이 유형이 있습니다

type Object_Type<T> = { [P in keyof T]: T[P] };
type Sequence<A, B = {}, C = {}, D = {}, E = {}, F = {}, G = {}, H = {}, I = {}, J = {}, K = {}, L = {}, M = {}, N = {}> =
    Object_Type<A>
    & Object_Type<B>
    & Object_Type<C>
    & Object_Type<D>
    & Object_Type<E>
    & Object_Type<F>
    & Object_Type<G>
    & Object_Type<H>
    & Object_Type<I>
    & Object_Type<J>
    & Object_Type<K>
    & Object_Type<L>
    & Object_Type<M>
    & Object_Type<N>;

그리고 이렇게 사용할 수 있습니다

const sequence: Sequence<{name: string}, {age: number}> = {
    name: "John",
    age: 999
};

그러나 모든 단일 일반 매개 변수를 수동으로 정의하고 기본값을 제공하는 것은 매우 극단적이므로 이렇게 정의할 수 있는지 궁금합니다.

type Sequence<...T> = Object_Type<...T>;
jcalz

TypeScript 에는 명시적 가변 유형 이 없으므로 정확한 공식 Sequence<...T>이 작동하지 않습니다. 그러나 에서와 같이 대신 튜플 유형을 사용할 수 있습니다 Sequence<[{name: string}, {age: number}]>. 주어진 튜플 유형을 사용 하여 매핑 할 수 있으며 해당 속성 Object_Type조회 하여 튜플을 공용체 로 변환number 한 다음 공용체를 교집합으로 변환합니다 .

type Object_Type<T> = { [P in keyof T]: T[P] };
type UnionToIntersection<U> =
  (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
type Sequence<T extends any[]> = 
  UnionToIntersection<{ [K in keyof T]: Object_Type<T[K]> }[number]>;

const sequence: Sequence<[{ name: string }, { age: number }]> = {
  name: "John",
  age: 999
};

다른 경우가 있을 수 있지만(예: 개인 A, B, 등 유형 자체가 공용체인 경우) 작동합니다. 이것들은 망치질 수 있지만... 여기 사용 사례를 이해하지 못하는 것 같습니다. Object_Type대부분은 작동하지 않습니다. 그래서 당신은 그것으로 무엇을 하고 있습니까? 당신이 얻을 수없는 표현 Sequence<A,B,C>(또는 Sequence<[A,B,C]>내 버전에서)으로 A & B & C무엇을 습니까? 자세히 설명하면 하려는 작업에 더 쉽고 더 나은 솔루션이 있을 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

일반 유형 오류 : 일반 유형을 명시 적으로 지정할 수 없습니다.

Swift에서 반환 유형을 특정 유형의 컬렉션으로 지정할 수 있습니까?

일반 유형을 복합 컴포넌트 속성 태그의 "유형"으로 사용할 수 있습니까?

일반 유형으로 Flink의 AggregateFunction을 구현할 수 있습니까?

Java에서 일반 유형으로 기본 유형 (int)을 사용할 수 있습니까?

Bolt CMS : 다른 필드 값을 기반으로 콘텐츠 유형 제목을 생성 할 수 있습니까?

유형별로 열거 형을 반복 할 수 있습니까?

하나 이상의 유형으로 Flutter / Dart에서 목록을 생성 할 수 있습니까?

순수 가상 함수의 반환 유형으로 추상 유형을 사용할 수 있습니까?

함수의 반환 유형을 변수 유형으로 사용할 수 있습니까?

일반적으로 C ++ 비교기 유형을 반전 할 수있는 것이 있습니까?

Swift에서 일반 유형 T에 기본 유형을 지정할 수 있습니까?

형식 생성자는 형식과 동일한 방식으로 별칭을 지정할 수 있습니까?

Java SpringBoot에서 일반 시작 노드를 가지고 나중에 유형을 지정할 수 있습니까?

PostgreSQL에서 유형이 C 함수의 Oid 유형을 기반으로 복합인지 어떻게 식별 할 수 있습니까?

두 개의 와일드 카드 유형을 동일한 유형으로 선언 할 수 있습니까?

일반 텍스트 유형으로 ENCRYPTBYKEY 최대 반환 값을 결정할 수 있습니까?

MapStruct가 원본과 대상 모두로 일반 유형을 포함하는 컬렉션에 대한 매핑을 자동으로 감지 할 수 있습니까?

이 유형을 일반 유형으로 변환 할 수없는 이유는 무엇입니까?

유도 유형의 두 생성자 표현식이 Coq에서 동일한 경우 해당 인수를 기반으로 다시 작성할 수 있습니까?

typescript가 매개 변수 값을 기반으로 함수의 응답 유형을 유추 할 수 있습니까?

나머지 유형이있는 Typescript 일반 함수 오버로드

숫자 또는 문자열에서 파생 된 동일한 두 가지 유형을 생성하고 이들을 합하거나 연결할 수 있습니까?

확장된 일반 유형의 자식 속성 유형을 어떻게 유추할 수 있습니까?

식 유형을 반환 유형으로 변환 할 수 없습니다.

유형에 일치하는 생성자가 없습니다. Arguments 또는 FactoryMethod 지시문을 사용하여 유형을 생성 할 수 있습니다.

객체에 있는 함수의 흐름 유형을 속성 중 하나의 유형으로 동적으로 설정할 수 있습니까?

FlexibleInstances를 통한 "오버로딩"은 다른 유형을 반환하거나 유형 클래스와 일치 할 수 있습니까?

Java - 함수가 입력 인수 중 하나와 동일한 유형을 반환할 수 있습니까?

TOP 리스트

  1. 1

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  2. 2

    Matlab의 반복 Sortino 비율

  3. 3

    Python의 csv 파일에서 첫 번째 열 삭제

  4. 4

    개체 참조가 개체의 인스턴스로 설정되지 않았습니까? (예외 오류 ~ ASP.NET MVC)

  5. 5

    atob은 인코딩 된 base64 문자열을 디코딩하지 않습니다.

  6. 6

    EventEmitter <string>의 컨텍스트 'this'가 Observable <string> 유형의 'this'메서드에 할당되지 않았습니다.

  7. 7

    병합 셀을 사용하여 워크 시트의 데이터 필터링

  8. 8

    PhpStorm 중단 점에서 변수 값을 볼 수 없습니다.

  9. 9

    jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까?

  10. 10

    `@ Transactional`이 있음에도 불구하고 이러한 데이터베이스 수정 사항이 롤백되지 않는 이유는 무엇입니까?

  11. 11

    ssh를 사용하여 원격에서 로컬로 파일 복사

  12. 12

    종속 사용자 정의 Lightning 선택 목록 Level2 및 Level3을 설정한 다음 Lightning 구성 요소에서 Level2를 재설정하지만 Level2 캐시 데이터가 저장됨

  13. 13

    2 개의 이미지를 단일 평면 이미지로 결합

  14. 14

    팝업처럼 위젯을 표시하는 방법

  15. 15

    [해결] 쿠키 설정 SameSite = Chrome / JSP, JAVASCRIPT에서 작동하지 않습니다.

  16. 16

    버튼 클릭을 기반으로 특정 CSS 클래스를 추가하는 방법은 무엇입니까?

  17. 17

    React 구성 요소가 자동으로 초기 상태로 다시 렌더링됩니다.

  18. 18

    연결된 서버 쿼리는 작동하지만 동일한 OPENQUERY는 "sys.servers에서 서버 'SERVER'를 찾을 수 없습니다.

  19. 19

    파일 2의 파일 1에서 동일한 줄을 조건으로 바꿉니다.

  20. 20

    아이디어 Intellij : 종속성 org.json : json : 20180813을 찾을 수 없음, maven에서 org.json 라이브러리를 가져올 수 없음

  21. 21

    상황에 맞는 메뉴 색상

뜨겁다태그

보관