타입스크립트 interface

column clash·2021년 8월 22일
0
// 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
  }
} 
profile
풀스택 개발 중...

0개의 댓글