더북(TheBook)

string[]readonly string[]보다 더 좁은 타입이므로 ba에 대입할 수 있습니다. 반대는 불가능합니다.

이번에는 readonly 튜플과 일반 배열을 서로 대입해보겠습니다.

let a: readonly ['hi', 'readonly'] = ['hi', 'readonly'];
let b: string[] = ['hi', 'normal'];

a = b;
// Type 'string[]' is not assignable to type 'readonly ["hi", "readonly"]'. Target requires 2 element(s) but source may have fewer.
b = a;
// The type 'readonly string[]' is 'readonly' and cannot be assigned to the mutable type 'string[]'.

두 가지 경우 모두 에러가 발생합니다.

배열을 튜플에 대입하려는 a = b의 경우, 배열이 튜플보다 넓은 타입이므로 에러가 발생합니다.

튜플을 배열에 대입하려는 b = a의 경우, 튜플이 배열보다 좁은 타입인 것은 맞으나 readonly 수식어가 붙는다면 일반 배열보다 넓은 타입이므로 대입할 수 없습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.