
type User1 = {
name: string;
age: number;
};
interface User2 {
name: string;
age: number;
}
type Info = {
name : string;
age : number;
}
type ExtraInfo = {
email : string;
}
type TotalInfo = Info & ExtraInfo
const person: TotalInfo = {
name : "영희";
age : 25;
email : "aa@gmail.com";
}
interface Person {
name: string;
}
interface Employee extends Person {
employeeId: string;
}
const emp: Employee = {
name: "철수",
employeeId: "E123",
};
type : 불가능
interface : 동일 이름으로 병합 가능(선언 병합)
// interface는 병합 가능 (자동으로 합쳐짐)
interface User {
name: string;
}
interface User {
age: number;
}
// 타입처럼 동작
const user: User = {
name: "민수",
age: 25,
};
=> 팀의 규칙을 따르는게 우선
부가질문
let age: number = 25; // 숫자만 가능
let name: string = "철수"; // 문자열만 가능
type User = {
name: string;
age: number;
isAdmin: boolean;
};
const user: User = {
name: "영희",
age: 30,
isAdmin: true,
};
type Add = (a: number, b: number) => number;
const add: Add = (a, b) => a + b;
type Status = "loading" | "success" | "error";
let state: Status = "loading"; // "fail"은 안됨
function identity<T>(value: T): T {
return value;
}
identity<number>(123); // T는 number
identity<string>("hello"); // T는 string