Objects and Arrays
JavaScript 오브젝트는
이름이 있는 키로 래핑된 값의 모음입니다.
// 이런 오브젝트를 더 크고, 더 복잡한
데이터 모델로 만들기 위해 합칠 수 있습니다.
const userAccount = {
name: "Kieron",
id: 0,
};
// 단어 몇 개를 마우스로 호버해보면 (purchaseOrder 위에 호버해보세요),
TypeScript가 JavaScript를 이름표가 붙은 타입으로
어떻게 해석하는지 확인할 수 있습니다.
값은 "."를 통해 구매 주문에 대한 사용자 이름에
접근할 수 있습니다:
const pie = {
type: "Apple",
};
const purchaseOrder = {
owner: userAccount,
item: pie,
};
// () 사이에 있는 코드의 각 부분에 마우스로 호버해보면,
TypeScript가 각 부분에 대해 더 많은 정보를 제공하는 것을 확인할 수 있습니다.
아래에 다시 작성해보세요:
문자별로 다음 줄에 이것을 복사해보세요:
purchaseOrder.item.type
TypeScript는 이 파일에서 사용 가능한 JavaScript 오브젝트에 대한 피드백을
playground에 제공하며, 오타를 방지할 수 있게 해주고
다른 곳에서 찾아볼 필요 없이
추가 정보를 제공해줍니다.
TypeScript는 배열에도 동일한 기능을 제공합니다.
여기에 구매 주문만 포함된 배열이 있습니다.
console.log(purchaseOrder.item.type);
// allOrders에 호버해보면,
호버 정보가 []로 끝나기 때문에 배열이라는 것을 알 수 있습니다.
인덱스(0부터 시작하는)와 함께 대괄호를 사용함으로써
첫 번째 순서에 접근할 수 있습니다.
const allOrders = [purchaseOrder];
// 오브젝트를 얻기 위한 다른 방법은
오브젝트를 제거하기 위해 배열을 꺼내오는 것입니다.
이렇게 하면 배열에서 오브젝트를 제거하고, 반환합니다.
내부의 기존 데이터를 변경하므로
배열을 변형한다고 불립니다.
const firstOrder = allOrders[0];
console.log(firstOrder.item.type);
// 이제 allOrders는 비어 있습니다.
데이터를 변형하는 것은 여러모로 유용할 수 있습니다만,
코드베이스의 복잡성을 줄이는 한 가지 방법은 변형을 방지하는 것입니다.
대신에 TypeScript는 읽기 전용으로 배열을 선언하는 방법을 제공합니다:
구매 주문 형태를 기반으로 하는 타입을 생성합니다:
const poppedFirstOrder = allOrders.pop();
// 맞아요! 확실히 코드가 좀 많습니다.
여기에 4가지 새로운 것이 있습니다:
type PurchaseOrder - TypeScript에 새로운 타입을 선언합니다.
typeof - 다음에 전달되는 상수 기반의 타입을 설정하기 위해
타입 추론 시스템을 사용합니다.
purchaseOrder - 변수 purchaseOrder를 얻고
이것이 주문 배열에 있는 모든 오브젝트의 형태라고
TypeScript에 알려줍니다.
readonly - 이 오브젝트는 변형을 지원하지 않으며,
한 번 생성되면 배열의 내용이
항상 동일하게 유지됩니다.
이제 readonlyOrders에서 pop을 시도하면,
TypeScript는 오류를 발생시킵니다.
type PurchaseOrder = typeof purchaseOrder;
// 구매 주문의 읽기 전용 배열을 생성합니다
const readonlyOrders: readonly PurchaseOrder[] = [purchaseOrder];
// 거의 모든 곳에서 readonly을 사용할 수 있으며,
여기저기에 약간의 추가 문법이 있지만,
많은 추가 안전성을 제공합니다.
readonly에 대해 더 많이 알아볼 수 있습니다:
- https://www.typescriptlang.org/docs/handbook/interfaces.html#readonly-properties
- https://basarat.gitbooks.io/typescript/content/docs/types/readonly.html
그리고 함수 예시에서
JavaScript와 TypeScript에 대해 계속 배울 수 있습니다:
example:functions
또는 불변성에 대해 더 알고 싶다면:
example:immutability
readonlyOrders.pop();