2개의 인터페이스의 Marge
확인 또는 해명 요구
인터페이스가 2개 있는 경우.이러한 2개의 인터페이스의 Marge를 작성하는 「적절한」방법은 무엇입니까?
IFoo {
// some stuff
}
IBar {
// some stuff
}
IFooBar extends IFoo, IBar {
// Empty
}
작동은 되는데 기분이 이상해요. 빈 IFoo Bar를 잘못하고 있는 것 같아요.
제가 제대로 하고 있는 건가요?
또, 이것 또한 유효하다는 것도 깨달았습니다.
type IFooBar = IFoo & IBar;
나는 사용하는 것에 비논리적인 거부감이 있다.type
하지만, 그것은 훨씬 깨끗하다.
이 문서에서는 인터페이스와 타입 에일리어스 간의 관계에 대해 매우 잘 설명합니다.이 부분에서는 인터페이스와 타입 에일리어스 간의 작은 차이에 초점을 맞추고 있습니다.
둘다요.
interface IFooBar extends IFoo, IBar {}
그리고.
type IFooBar = IFoo & IBar;
일반적인 방법으로, 대부분의 경우 동일하게 동작합니다.부터type
입력할 문자가 적기 때문에 선택할 수 있습니다.
혼합으로 인해 발생하는 불일치interface
그리고.type
문제가 되지 않습니다.그것들은 단지 목표를 달성하기 위한 적절한 기능일 뿐입니다.한다면const BarClass = FooClass
그 일을 해내요.class BarClass extends FooClass {}
항상 사용한다는 이유만으로 선호되어서는 안 됩니다.class
(이 예는 설명 목적으로 사용되며 이러한 접근법에는 상당한 차이가 있습니다.)
그럼에도 불구하고.interface
그리고.type
는 마찬가지로 동작할 수 있습니다.마지된 인터페이스의 경우 차이가 있습니다(링크된 문서에 기재되어 있습니다).이 조작은 유효합니다.
interface FooBar extends IFoo, IBar {}
class FooBar { ... }
이로 인해 다음과 같은 유형 오류가 발생합니다.
type FooBar = IFoo & IBar;
class FooBar { ... }
멤버의 깊이가1레벨을 넘는2개의 인터페이스를 Marge 하는 경우는, 다음과 같이 합니다.
export interface TypeOne {
one: {
two: {
hello: string;
}[]
}
}
export type TypeTwo = {
one: {
two: {
world: string;
}[]
}
} & TypeOne;
const x: TypeTwo;
x.one.two[0]. // autocomplete options are 'hello' / 'world'
머지된 인터페이스의 의미에 대해서는 문제가 없다고 생각합니다.한다면IFooBar
오브젝트 지향 설계의 관점에서는 새로운 엔티티이므로 빈 인터페이스도 괜찮습니다.그러나 이러한 엔티티가 존재하지 않지만 관련되지 않은 인터페이스(일부 해킹코드용)를 Marge하고 싶을 경우,IFoo & IBar
변수 유형 정의 또는type
이걸 짧게 해줘서
C++나 C#과 같은 객체 지향 언어에서 나온 프로그래머로서의 의견일 뿐입니다.
언급URL : https://stackoverflow.com/questions/49723173/merge-two-interfaces
'programing' 카테고리의 다른 글
Type Script:형식에 인덱스 서명이 없습니다. (0) | 2023.03.31 |
---|---|
Google reCaptcha 재설정이 작동하지 않습니다. (0) | 2023.03.31 |
죄송합니다. 선택하신 제품과 일치하는 제품이 없습니다.다른 조합의 WooCommerce를 선택하십시오. (0) | 2023.03.31 |
구성요소는 어느 수준에서 Stores in Flux의 엔티티를 읽어야 합니까? (0) | 2023.03.31 |
Android에서 json 문자열을 해석하는 방법은 무엇입니까? (0) | 2023.03.31 |