Skip to content

Latest commit

 

History

History
98 lines (62 loc) · 2.24 KB

array tuple any.md

File metadata and controls

98 lines (62 loc) · 2.24 KB

Array

자바스크립트에서의 Array는 객체

사용 방법

  • Array<타입>
  • 타입[]
let list1: number[] = [1, 2, 3];  // 더 선호하는 방식

let list2: Array<number> = [1, 2, 3];

// 여러 타입을 한 배열에 사용할 때
let list3: (number | string)[] = [1, 2, 3, "4"];

→ 여러 타입을 한 배열에서 사용할 때는 union 타입 사용


Tuple

let x: [string, number];

x = ["hello", 39];  // 순서와 타입, 길이까지 모두 일치해야 함

// x = [10, "Mark"];  // 오류

x[3] = "world";  // 없는 인덱스값 사용함

→ 순서와 타입, 길이까지 모두 일치해야 함

→ 때문에 [10, "Mark"][string, number]로 지정해 둔 순서와 다르므로 오류

→ 없는 인덱스 번호에 값 삽입 시 오류, [string, number]에서는 인덱스 번호 1이 마지막이므로 2부터는 undefined

const person: [string, number] = ["Mark", 39];

const [first, second, third] = person;

→ third는 들어갈 자리가 없으므로 오류


any

어떤 타입이어도 상관없는 타입

  • 최대한 쓰지 않는 것을 권장
    • 컴팡리 타임에 타입 체크가 정상적으로 이루어지지 않기 때문
  • 컴파일 옵션 중 any를 써야 하나 쓰지 않았을 때 오류를 뱉도록 하는 옵션 존재
    • noImplicitAny
  • 타입 안전성은 TypeScript를 사용하는 주요 동기 중 하나이며 필요하지 않은 경우 any를 사용하지 않도록 해야 함
function returnAny(message: any): any {
  console.log(message);
}

const any1 = returnAny('리턴은 아무거나');

any1.toString();  // 어떤 것이든 다 된다는 뜻

→ message라는 인자가 어떠한 타입이든 다 될 수 있다는 뜻을 가짐


  • 계속하여 개체를 통해 전파된다는 특징이 있음
let looselyTyped: any = {};

const d = looselyTyped.a.b.c.d;

→ a, b, c, d 모두 any이며 마지막 d에 커서 올렸을 때 any로 확인됨


누수를 막는 방식

function leakingAny(obj: any) {
  const a = obj.num;
  const b = a + 1;
  return b;
}

const c = leakingAny({ num: 0 });  // c는 any로 확인됨
c.indexOf("0");  // 함수 내에 c가 없으므로 오류