반응형
Typescript에서 유형을 확장할 수 있습니까?
예를 들어 다음과 같은 타입이 있습니다.
type Event = {
name: string;
dateCreated: string;
type: string;
}
이제 이 유형을 확장하려고 합니다.
type UserEvent extends Event = {
UserId: string;
}
이거 안 되네.이거 어떻게 해?
키워드extends
는 인터페이스 및 클래스에만 사용할 수 있습니다.
추가 속성이 있는 유형만 선언하려는 경우 교차 유형을 사용할 수 있습니다.
type UserEvent = Event & {UserId: string}
TypeScript 2.2의 UPDATE. 유형이 몇 가지 제한을 충족하는 경우 개체와 같은 유형을 확장하는 인터페이스를 사용할 수 있습니다.
type Event = {
name: string;
dateCreated: string;
type: string;
}
interface UserEvent extends Event {
UserId: string;
}
그 반대로는 동작하지 않습니다.UserEvent
인터페이스로 선언해야 합니다.type
사용하고 싶다면extends
구문을 사용합니다.
그리고 아직 쓸 수 없다.extend
예를 들어, 다음과 같은 경우에는 동작하지 않습니다.Event
는 제약이 없는 타입 파라미터입니다.
유형을 교차할 수 있습니다.
type TypeA = {
nameA: string;
};
type TypeB = {
nameB: string;
};
export type TypeC = TypeA & TypeB;
코드 내 어딘가에서 다음 작업을 수행할 수 있습니다.
const some: TypeC = {
nameB: 'B',
nameA: 'A',
};
달성하려고 하는 것은 다음과 같습니다.
interface Event {
name: string;
dateCreated: string;
type: string;
}
interface UserEvent extends Event {
UserId: string;
}
유형을 정의한 방법으로는 상속을 지정할 수 없지만 artem이 지적한 바와 같이 교차 유형을 사용하여 유사한 작업을 수행할 수 있습니다.
범용 확장자 타입은 다음과 같이 쓸 수 있습니다.
type Extension<T> = T & { someExtensionProperty: string }
언급URL : https://stackoverflow.com/questions/41385059/possible-to-extend-types-in-typescript
반응형
'source' 카테고리의 다른 글
소수점 이하를 2배로 이동 (0) | 2022.09.20 |
---|---|
JPA의 @Basic(옵션 = false) vs @Column(nullable = false) (0) | 2022.09.20 |
mariadb 서버를 mysql 워크벤치에 연결할 수 없습니다. (0) | 2022.09.20 |
두 날짜 사이의 날짜 목록 가져오기 (0) | 2022.09.18 |
렌더링 후 코드 반응 (0) | 2022.09.18 |