라벨이 interface인 게시물 표시

[TypeScript] interface와 type 비교(인터페이스, 타입 별칭) 그리고 변경 불가능한 interface와 type 만들기

이미지
Interface 와 type의 차이 1번. 확장 방식 interface(인터페이스)와 type(타입 별칭)의 가장 큰 차이점은 extends 키워드로 타입의 확장이 가능하냐 불가능하냐 이다.  interface(인터페이스)는 extends로 확장이 가능하지만 type(타입 별칭)은 확장이 불가능하다. extends로만 확장이 불가능할 뿐 type 또한 아래와 같은 방식으로 확장이 가능하긴하다. ex) type test1 = {name: string} type test2 = test1 & {age: number} const test3: test2 = { name: 'd', age: 33 } extends로 확장이 필요한 경우가 많기 때문에 interface를 사용하는것이 좋다. 추가적으로  interface의 경우 다른곳에서 동일한 이름의 interface를 정의하게되면 동일한 명칭의 interface를 하나의 interface로 합친다. 그래서 특정 라이브러리에 내가 원하는 타입을 추가하거나 확장할 때 d.ts 파일에서 interface로 정의하면 해당 라이브러리에 선언된 interface 와 내가 추가적으로 작성한 interface가 합쳐진다.  반면에 type을 사용하여 동일한 이름으로 다른곳에서 type을 정의하게되는  경우에는 에러가 발생한다. 2번. 상세 타입 정보 제공 아래 사진과 같이 interface는 상세 타입정보가 나오지 않지만 type의 경우 상세 타입정보가 나온다. 하지만 interface를 사용하더라도 해당 interface를  cmd + 클릭하면 interface가 정의된 곳으로 바로 가서 타입을 확인할 수 있다. interface (인터페이스) type (타입 별칭) 3번 interface 는 객체를 정의하는것이고, type 은 타입과 객체를 두개를 모두 정의할 수 있다. interface RSP { ROCK : string ; SISSORS : string ; P...

[JAVA] 인터페이스(interface)

JAVA 인터페이스(interface) 약속되어있는 선언부의 형식을 그대로 상속받아 메서드들을 반드시 구현하도록 강제한다. 선언시 interface키워드를 사용한다. 인터페이스도 일종의 추상클래스이다. 오직 추상메서드와 상수만을 구성원으로 가질 수 있다. 모든 멤머변수는 public static final이어야 하며 이를 생략할 수 있다. 모든 메서드는 public abstract이어야 하며 이를 생략할 수 있다. 인터페이스는 public으로 정의해야하며 멤버도 반드시 public이다. *** 인터페이스에 선언된 모든 메소드는 public이다       인터페이스에 선언된 모든 변수는 public이다(상수 final)  => 변수 (추상클래스:멤버변수 , 인터페이스 : 상수형변수) 인터페이스 내부에 상수용 변수 선언이 가능하다. 그리고 그변수는 그냥 작성하여도    static final로   자동선언된다. 상속 (인터페이스는 인터페이스로부터만 상속받을 수 있다.) 인터페이스 ==> 인터페이스                  (extends)  인터페이스 ==> 클래스                  (implements) 클래스 ==> 인터페이스                  (error) 인터페이스는 클래스를 상속받을 수 없다. 인터페이스를 최종적으로 구현하는것은 마지막으로 상속받는 class 내부에서 구현해야한다. 여러개 클래스를 묶어서 인터페이스로 관리(서로 다른 클래스들에게 관계를 맺어준다) 추상클래스의 일종(추상클래스 단점을 보완) 미완성된 클래스이므로  자신이 메...