Typescript에서 암시적으로 튜플 만들기
타이프스크립트에서 튜플을 만들도록 타이프 힌트를 주지 않는 방법이 있나요?
만약 내가 간단히 한다면
const tuple = [1, 2];
투플의 유형
내가 가장 가까이 갈 수 있는 라인은
const tuple: [number, number] = [1, 2];
제가 뭔가를 놓치고 있는 건가요, 아니면 이게 유일한 방법인가요?
형식 스크립트는 배열 리터럴에서 튜플 형식을 추론하지 않습니다. 유형을 명시적으로 지정할 수도 있고, 보조 함수를 만들어 조금 더 쉽게 만들 수도 있지만 추론을 얻을 수도 있습니다.
const tuple = <T extends [any] | any[]>(args: T): T => args
tuple(["A", "B"]) // [string, string]
편집
3.4부터는 어설션을 사용할 수도 있습니다. 이것은 추가 기능이 필요하지 않다는 장점이 있지만 읽기 전용 튜플을 생성한다.
var t = [1, ''] as const;
t[0] = 1 //err
3.0부터는 정지 매개변수에서 튜플을 사용하여 튜플을 추론할 수도 있습니다.
const tuple = <T extends any[]>(...args: T): T => args
tuple("A", "B") // [string, string]
typescript 3.0을 사용하면 다음과 같은 유틸리티 기능을 사용할 수 있습니다.
const tuple = <T extends any[]>(...args: T): T => args
그리고 다음과 같은 방식으로 사용합니다.
const tup = tuple(1, 2) // tup type is [number, number]
TypeScript 3.4부터는 마지막에 간단히 추가할 수 있습니다.
const tuple = [1, 2] as const;
TS 놀이터에 대한 더 나은 예시와 링크가 있는 의 답변에 전적으로 기여합니다.
타입스크립트 4.0은 튜플 타입을 암시적으로 추론하는 추가적인 방법을 가지고 있다:
type, 여기서 는 배열과 같은 형식 매개변수로 튜플 형식의 추론에 대한 선호도를 나타낼 때 편리하게 사용할 수 있다.
const tuple = <T extends unknown[]>(args: [...T]): T => args
tuple(["A", "B"]) // [string, string]
읽기 전용 튜플을 만들고 다른 기술이 값의 유형을 넓히는 것이 고통이라는 것을 발견했기 때문에 참고를 위해 이 답변을 추가합니다.
const tuple = <T extends any[]>(xs: readonly [...T]): T => xs as T;
두 가지 방법으로 사용할 수 있습니다.
const a = tuple(['foo', 10] as const)
유형은 읽기 전용이 아니며 다음과 같습니다.
const b = tuple(['foo', 10]);
유형이 있고 이다.
튜플의 유형을 정의하는 것이 더 표현적이기 때문에 권장합니다.
type TreeHouse = [location: Location, name: string, capacity: number];
그리고 나서 사용한다.
<TreeHouse>[new Location(…), "Treeston", 6]
내가 시도한 바로는 이 튜플 리터럴은 불행히도 매개 변수 이름을 사용할 수 없다.
우선순위를 지켜라! 와 같은 우선 순위가 없습니다.
'개발하자' 카테고리의 다른 글
DNS가 Kubernetes에서 NGINX로 확인되지 않음 (0) | 2022.11.24 |
---|---|
Python: 상속된 부모 클래스 메서드 호출 실패 (0) | 2022.11.23 |
Kubernetes - 포드가 컨테이너에 남아 생성 상태 (0) | 2022.11.22 |
일반 유형을 사용하여 스크립트 래핑 함수를 입력합니다. (0) | 2022.11.22 |
더블 클릭 시 아나콘다 주피터 노트북에서 .ipynb를 엽니다(macOS). (0) | 2022.11.21 |