TypeScript에서 여러 유형의 어레이 정의
다음과 같은 양식이 있습니다.[ 1, "message" ]
.
TypeScript에서는 어떻게 정의합니까?
TypeScript에서 여러 유형의 어레이 정의
유니언 타입 사용(string|number)[]
데모:
const foo: (string|number)[] = [ 1, "message" ];
[1, "message" (메시지)]폼 배열이 있어요
항상 두 가지 요소만 존재한다고 확신하는 경우[number, string]
다음으로 태플이라고 선언할 수 있습니다.
const foo: [number, string] = [ 1, "message" ];
그리고 당신은 태플 멤버의 의미 있는 이름을 제공할 수 있습니다.id
그리고.text
:
const foo: [id: number, text: string] = [ 1, "message" ];
튜플로서 취급하는 경우(언어 사양 섹션 3.3.3 참조), 다음과 같이 합니다.
var t:[number, string] = [1, "message"]
또는
interface NumberStringTuple extends Array<string|number>{0:number; 1:string}
var t:NumberStringTuple = [1, "message"];
TS의 보풀이 다른 솔루션에 대해 불만을 제기하고 있었기 때문에, 다음과 같은 방법으로 대응할 수 있었습니다.
item: Array<Type1 | Type2>
타입이 1개뿐인 경우는, 다음의 것을 사용해도 괜찮습니다.
item: Type1[]
TypeScript 3.9+ 업데이트(2020년 5월 12일)
이제 TypeScript는 명명된 튜플도 지원합니다.이것에 의해, 코드의 이해성과 유지보수가 큰폭으로 향상됩니다.공식 TS 놀이터를 확인합니다.
이제 이름 없는 대신
const a: [number, string] = [ 1, "message" ];
이름을 추가할 수 있습니다.
const b: [id: number, message: string] = [ 1, "message" ];
참고: 모든 이름을 한 번에 추가해야 합니다. 일부 이름은 생략할 수 없습니다. 예를 들어 다음과 같습니다.
type tIncorrect = [id: number, string]; // INCORRECT, 2nd element has no name, compile-time error.
type tCorrect = [id: number, msg: string]; // CORRECT, all have a names.
힌트: 마지막 요소의 수를 알 수 없는 경우 다음과 같이 쓸 수 있습니다.
type t = [msg: string, ...indexes: number];// means first element is a message and there are unknown number of indexes.
TypeScript 4.x+ Variadic 태플 타입
마지막 예는 TS 4.x의 경우 다음과 같이 변경해야 합니다.
type t = [msg: string, ...indexes: number[]];// means first element is a message and there are unknown number of indexes.
종류number
로 변경되었습니다.number[]
.
자세한 내용은 이쪽:https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html#variadic-tuple-types
여러 종류의 아이템을 가질 수 있는 배열의 타이핑 포맷은 다음과 같습니다.
Array<ItemType1 | ItemType2 | ItemType3>
이 기능은 테스트 및 타입 가드에 적합합니다.https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types
이 형식은 테스트 또는 유형 가드에서는 잘 작동하지 않습니다.
(ItemType1 | ItemType2 | ItemType3)[]
이 버전을 사용하고 있습니다.
exampleArr: Array<{ id: number, msg: string}> = [
{ id: 1, msg: 'message'},
{ id: 2, msg: 'message2'}
]
다른 제안과 조금 비슷하지만 여전히 쉽고 기억하기 좋습니다.
숫자 또는 문자열 배열을 가져오려면 다음 중 하나의 배열을 사용하는 유형을 정의할 수 있습니다.
type Tuple = Array<number | string>
const example: Tuple = [1, "message"]
const example2: Tuple = ["message", 1]
특정 순서(숫자와 문자열 등)의 배열을 필요로 하는 경우
type Tuple = [number, string]
const example: Tuple = [1, "message"]
const example2: Tuple = ["messsage", 1] // Type 'string' is not assignable to type 'number'.
const myarray:(TypeA | TypeB)[];
또는 다른 유형을 추가해야 할 경우 여러 위치에서 변경되는 것을 방지하고 유형을 만듭니다.
type MyMixedType = TypeA | TypeB;
const myarray: MyMixedType[];
오브젝트에 여러 개의 값 유형을 가진 배열을 다룰 경우 이 방법이 효과적이었습니다.
{ [key: string]: number | string }[]
[ 1, "message" ] as const ;
"as const"를 실행하면 다음과 같이 입력합니다.
type const = readonly [1, "message"]
컴퓨터가 가능한 정확한 유형 추론 때문에 좋다.
언급URL : https://stackoverflow.com/questions/29382389/defining-array-with-multiple-types-in-typescript
'programing' 카테고리의 다른 글
JSON 구문 분석 오류: io.starter.topic 인스턴스를 생성할 수 없습니다.주제 (0) | 2023.03.20 |
---|---|
ag-grid 대 slick-grid 대 angular-grid 중 어느 것이 더 나은가? (0) | 2023.03.20 |
Jquery Ajax POST에서 400개의 잘못된 요청 오류가 발생함 (0) | 2023.03.15 |
워드프레스에서 wp_get_attachment_image()를 올바르게 사용하는 방법 (0) | 2023.03.15 |
업로드 중 오류가 발생했습니다.이미지를 편집기에 업로드할 때 나중에 다시 시도하십시오."라는 워드프레스를 사용합니다. (0) | 2023.03.15 |