TypeScript 더블 타입 사용 예제

타입스크립트에서 더블 타입 데이터형 사용 방법을 알아보겠습니다.

 

더블 타입

TypeScript는 더블 타입이라는 것도 사용할 수 있습니다.

자바 스크립트에는 더블 타입이라는 개념은 존재하지 않습니다.

TypeScript에서는 배열 대신에 더블 타입을 사용할 수 있습니다.

예를 들어 더블 타입은 함수의 반환값을 여러개 설정하고 싶은 경우에 반환값을 배열에 넣어서 반환 하는것과 비슷하다고 생각하면 됩니다.

더블 타입의 작성 예제입니다.

[string, number]

 

해석하면 길이가 2인 배열을 선언하고, 0번째에는 문자열을, 1번째에는 숫자를 대입하도록 한다는 의미입니다.

const foo: [string, number] = ['foo', 5];

const str: string = foo[0];

function makePair(x: string, y: number): [string, number] {
	
}

 

더블 타입을 사용할때 주의점으로는, TypeScript에서 더블 이라고 불리고 있지만 어디까지나 배열이기 때문에 배열 함수로 조작을 해야합니다.

아래의 코드는 TypeScript에서 컴파일할대는 어레가 발생하지 않지만 실제 실행을 하게 되면 변수 num에 대입한 값이 숫자가 아닌 문자열이 됩니다.

const tuple: [string, number] = ['foo', 3];

tuple.pop();
tuple.push('Hey!');

const num: number = tuple[1];

 

더블 타입을 사용시에는 어떠한 값이 들어가는지 확실히 정해놓고 사용을 해야합니다.

컴파일 에러는 안나지만, 실제 동작에서 에러가 발생할 수도 있기 때문입니다.

TypeScript에서 더블 타입은 가변 더블 타입도 선언할 수 있습니다.

type NumAndStrings = [number, ...string[]];

const a1: NumAndStrings = [3, 'foo', 'bar'];
const a2: NumAndStrings = [5];

// 에러: Type 'string' is not assignable to type 'number'.
const a3: NumAndStrings = ['foo', 'bar'];

 

가변 더블 타입은 …(배열 타입) 으로 작성을 합니다.

예제 에서 정의한 NumAndStrings 가변 더블 타입은, 첫번째 요소는 숫자를 대입할 수 있고 두번째 부터는 문자열을 대입할수 있는 배열 형태의 타입 입니다.

변수 a3은 첫번째 요소에 숫자가 아닌 문자를 대입했기 때문에 에러가 발생했습니다.

더블 타입은 여러 형태의 타입을 복수지정할 수도 있습니다.

[number, string, ...any[]]

 

주의점으로는 …는 마지막에 한번만 사용할 수 있습니다.

[...number[], ...string[]]

 

처럼 사용은 불가능 합니다.

더블 타입을 선언할때 ?를 붙여서 선언할 수도 있습니다.

[string, number?]

 

?를 붙이게 되면 2번째 요소는 값을 지정해도 지정안해도 상관없다는 의미가 됩니다.

type T = [string, number?];

const t1: T = ['foo'];
const t2: T = ['foo', 3];

 

주의 해야할 것으로는 첫번째 요소에는 ?를 사용할 수 없습니다.

[string?, number]

에러가 발생합니다.

댓글