TypeScript에서 여러 유형으로 배열 정의


185

양식의 배열이 있습니다. [ 1, "message" ] 있습니다.

TypeScript에서 이것을 어떻게 정의합니까?


응답 없음이 하나, 유사 질문, 이번에 같은 클래스를 항목의 알 수없는 번호로 클래스 상속을 사용하여 모든 확장 : stackoverflow.com/questions/50322488/...
— cancerbero

답변:


313

TypeScript에서 여러 유형으로 배열 정의

공용체 유형 (string|number)[]데모를 사용하십시오 .

const foo: (string|number)[] = [ 1, "message" ];

[1, "message"] 형식의 배열이 있습니다.

항상 두 개의 요소 만 있다고 확신 [number, string]하면 튜플로 선언 할 수 있습니다.

const foo: [number, string] = [ 1, "message" ];

2
단, TS v1.4 이상이 필요합니다.
— Brocco

6
... 유형 중 하나에서만 사용 가능한 속성에 액세스하려는 경우 속성이 다른 복합 유형에서는 작동하지 않습니다.
— Nadine

1
@Nadine 그리고 그 경우에, 무엇을 할 수 있을까요?
— msanford

4
어떤 유형인지 확실 할 때마다 유형 어설 션을 수행 할 수 있습니다. 그런 다음 속성에 액세스합니다.
— Nadine

78

튜플로 취급하는 경우 ( 언어 사양의 3.3.3 섹션 참조 ) 다음을 수행하십시오.

var t:[number, string] = [1, "message"]

또는

interface NumberStringTuple extends Array<string|number>{0:number; 1:string}
var t:NumberStringTuple = [1, "message"];

10
팁 : 선호합니다type NumberStringTuple = [number, string]
— basarat

1
감사! 나는 이것을 완전히 찾고 있었다 :const W3COLORS: [[string, string, number, number]] = [ ["aliceblue", "#f0f8ff", 240, 248, 255], ... ];
— CoderPi

1
참고-두 유형 모두 배열에 있어야합니다 (빈 배열에서도 작동하지 않음). 받아 들여지는 대답은 더 다양하고 개인적으로 항상 사용하지만 필요에 따라 다릅니다.
— Druvis Cukurs

27

내 TS 보푸라기가 다른 솔루션에 대해 불평하고 있었기 때문에 나를 위해 일한 솔루션은 다음과 같습니다.

item: Array<Type1 | Type2>

유형이 하나뿐이면 다음을 사용하는 것이 좋습니다.

item: Type1[]

이것은 훌륭하지만 지금 배열을 반복하고 있다면 현재 배열의 유형을 어떻게 알 수 있습니까?
— thouliha



4

이 버전을 사용하고 있습니다.

exampleArr: Array<{ id: number, msg: string}> = [
   { id: 1, msg: 'message'},
   { id: 2, msg: 'message2'}
 ]

다른 제안과 약간 비슷하지만 여전히 쉽고 기억하기 쉽습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.