// type Square = { color: string; width: number };
interface Square {
color: string;
width: number;
}
let 네모: Square = { color: "red", width: 100 };
interface Student {
name: string;
}
interface Student {
score: number;
}
// 중복되면 {name:string, score:number} 가 됨.
interface Teacher extends Student {
age: number;
}
type Animal1 = { name: string };
type Cat = { age: number } & Animal;
//(interface의 extends 와 유사) & 기호 intersection type
// extends 는 복사인데, & 는 교차. 즉 두타입을 전부 만족하는 타입이라는 뜻.
let 학생: Student = { name: "kim", score: 100 };
let 선생: Teacher = { name: "kim", age: 20, score: 100 };
// interface의 장점 : extends 로 복사가능
// 중복된걸
// type vs interface
// interface 는 중복선언 가능.
// type 은 중복선언 불가능.
// 외부라이브러리같은 경우 interface 많이 쓴다.
// 속성추가하기가 매우 좋다.
// 다른 사람이 이용많이 할 것 같으면 object 타입정할때
// interface 쓰셈.
// 모든 object 를 인터페이스로 해도 되고.일반 변수나 함수는 type 그외, interface 써도 됨.
interface Product {
brand: string;
serialNumber: number;
model: string[];
}
let 상품: Product = {
brand: "Samsung",
serialNumber: 1360,
model: ["TV", "phone"],
};
interface Cart {
product: string;
price: number;
}
interface ExtendsCart extends Cart {
card: boolean;
}
let 장바구니: ExtendsCart[] = [
{ product: "청소기", price: 7000, card: false },
{ product: "삼다수", price: 800, card: false },
];
interface MathObj {
plus : (a:number, b:number) => number,
minus : (a:number, b:number) => number
}
let 오브젝트 :MathObj = {
plus(a,b){
return a + b
},
minus(a,b){
return a - b
}
}