class Person{
data :number = 0;
}
let choi = new Person();
let Kim = new Person();
class Person {
name;
age;
constructor( a:string ){
this.name = a;
this.age = 20;
}
}
class Person {
name;
age;
constructor( a:string ){
this.name = a;
this.age = 20;
}
sum() : number{
return this.age + 1
}
}
인터페이스는 상호 간에 정의한 약속 혹은 규칙
interface User {
name : string,
age : number,
}
let student : User = { name : 'Choi, age : 20 }
class를 상속하는 클래스가 있듯이, interface 또한 extends 키워드를 사용해 인터페이스를 확장 할 수 있다
//extends 사용 전
interface Student {
name :string,
}
interface Teacher {
name :string,
age :number,
}
//extends 사용 후
interface Student {
name : string,
}
interface Teacher extends Student{
age : number
}
(1) 확장하는 방법
//interface
interface PeopleInterface {
name: string
age: number
}
interface StudentInterface extends PeopleInterface {
school: string
}
//type
type PeopleType = {
name: string
age: number
}
type StudentType = PeopleType & {
school: string
}
(2) 선언명 중복 시
//interface는 name,age 속성을 가짐
interface Animal {
name :string
}
interface Animal {
legs :number
}
// type은 중복선언을 허용하지 않는다
type Animal = {
name :string
}
type Animal = {
legs :number
}
(3) 속성이 중복 시
//error
interface Animal {
name :string
}
interface Dog extends Animal {
name :number
}
//error
interface Animal {
name :string
}
interface Dog {
name :number
}
let Zoo :Dog & Animal = { name : '리트리버' }
단 name : 타입이 둘다 같다면 에러가 나지 않는다.
(4) 객체 사용
interface도 type 처럼 & 기호를 이용해도 복사 가능