TypeScript에서 object, array, enum, tuple, any type

cptkuk91·2022년 12월 12일
1

TypeScript

목록 보기
3/13

객체 형태

const person: {name: string; age: number;} = {
	name: "KJ",
    age: 30,
}

console.log(person.name);

중첩 객체

const product = {
  id: 'abc1',
  price: 12.99,
  tags: ['great-offer', 'hot-and-new'],
  details: {
    title: 'Red Carpet',
    description: 'A great carpet - almost brand-new!'
  }
}

product 타입을 아래와 같이 설정해줄 수 있다.

{
  id: string;
  price: number;
  tags: string[];
  details: {
    title: string;
    description: string;
  }
}

array type

const person: {name: string; age: number;} = {
	name: "KJ",
    age: 30,
    hobbies: ["sports", "cooking"],
}

let favoriteActivities: string[];
// favoriteActivities = "sports" 이건 에러가 됩니다. 문자열이니까,
// favoriteActivities = ["sports", 1]; 문자열 배열이라 숫자가 포함됐기 때문에, 에러가 됩니다. (만약 혼합된 형태의 배열을 원하면 any[]를 적어줘야 됩니다.

console.log(person.name);

Tuple type

Javascript에는 없지만, typescript에서 사용이 가능한 type
배열이라고 보이고, 배열은 맞지만 길이가 고정된 배열입니다.

const person: {name: string; age: number; hobbies: string[]; role: [number, string];} = {
	name: "KJ",
    age: 30,
    hobbies: ["sports", "cooking"],
    role: [2, "author"],
}

// [1] 자리는 문자열이기 때문에 error 발생
// person.role[1] = 10;
// person.role[0, "admin", "test"] tuple에서 직접적으로 값을 추가하면 에러가 발생하지만 push를 할 경우 에러없이 진행된다. typescript의 치명적인 문제..

let favoriteActivities: string[];

console.log(person.name);

enum type

Javascript에는 없지만, typescript를 통해 존재할 수 있는 type

// const ADMIN = 0;
// const READ_ONLY = 1;
// const AUTHOR = 2;

enum Role { ADMIN = 5, READ_ONLY = 100, AUTHOR }; // 0 , 1 , 2
// 별도값을 설정할 수 있다. ADMIN = 5, READ_ONLY 는 100

const person = {
	name: "KJ",
    age: 30,
    hobbies: ["sports", "cooking"],
    role: Role.ADMIN,
}

let favoriteActivities: string[];

console.log(person.name);

if(person.role === Role.ADMIN){
	console.log("admin!!");
}

any type

모든 type을 사용할 수 있고, 별도로 타입 배정도 필요 없습니다.

가능한 any를 사용하지 않는 걸 추천한다. typescript가 주는 장점을 any가 없앤다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글