
const user = {
name: "KJY",
age: 26
}
TypeScript에서 객체(Object)는 JavaScript와 마찬가지로 key-value 쌍으로 이루어진 데이터 구조TypeScript에서는 아래의 객체 리터럴 방식으로 구현 가능const user: {name: string, age: number} = {
name: "KJY",
age: 26
}
user은 객체name과 age를 가지고 있음TypeScript에서는 이 속성들의 이름과 타입을 명시적으로 정의할 수 있게 해줌property 기반 타입 시스템이라고 부르기도 함const user: {name: string, age: number} = ...
readonly는 객체의property나 배열 요소를 수정하지 못하게 제한
let config: {
readonly apiKey: string;
api: string;
} = {
apiKey: "MY_API_KEY",
api: "https://api.example.com",
};
config.api = "https://api.newExample.com"; // 가능
config.apiKey = "NEW_API_KEY";; // 불가능
config 객체에 apiKey라는 property가 readonly 속성이 설정돼있음readonly 속성이 아닌 api는 변경 가능apiKey를 변경하려고 하면 아래의 에러가 발생
type키워드를 사용하여 복잡하거나 반복되는 타입에 이름을 붙여주는 문법- 이를 통해 가독성 향상, 재사용성 증가, 유지보수 용이한 코드 작성 가능
type User = {
name: string;
age: number;
nickname: string;
birth: string;
bio: string;
location: string;
};
let user: User = {
name: "홍길동",
age: 26,
nickname: "gildong",
birth: "2000-01-01",
bio: "안녕하세요, 홍길동입니다.",
location: "서울",
};
User는 객체 타입에 붙인 타입 별칭User 타입이 필요한 여러 곳에서 재사용 가능User 정의만 수정하면 전체 코드에 반영 ➡️ 유지보수성 매우 높아짐객체의 key-value 쌍의 타입 규칙을 정의할 수 있는 문법으로, 정해지지 않은 여러 속성을 갖는 객체를 다룰 때 유용
type CountryCodes = {
[key: string]: string;
};
let countryCodes: CountryCodes = {
Korea: "KR",
UnitedState: "US",
UnitedKingdom: "UK",
};
key는 string 타입이어야 하며, 값(value) 역시 string 타입Korea나 UnitedState 같은 모든 속성의 key는 문자열이어야 하며, 그에 대응하는 값도 문자열이어야 함.countryCodes 객체에 아무 값도 없어도 [key: string]: string; 이 규칙을 위반하지만 않으면 모든 객체를 허용(아무런 프로퍼티가 없으니)Value의 타입과 일치하거나 호환해야 함