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;
}
}
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);
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);
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!!");
}
모든 type을 사용할 수 있고, 별도로 타입 배정도 필요 없습니다.
가능한 any를 사용하지 않는 걸 추천한다. typescript가 주는 장점을 any가 없앤다.