TypeScript에서 enum을 확장하는 방법

3617 단어
때때로 TypeScript에서 열거형을 확장해야 하지만 extends 의 경우와 같이 interface 구성을 사용할 수 없습니다.

enum MySuperEnum {
  ONE,
  TWO
}

enum MyMoreSuperEnum extends MySuperEnum // This is wrong


물론 열거형을 하나 더 만든 다음 공용체 유형을 만들 수 있습니다.

enum MySuperEnumExtender {
  THREE
}

type MyUnionType = MySuperEnum | MySuperEnumExtender;



우리가 얻을 수 있는 것과 이 접근 방식이 좋지 않은 이유는 무엇입니까? MyUnionType는 유형이므로 소품을 호출하기 위해 enum처럼 사용할 수 없습니다.

그러면 우리가 무엇을 할 수 있습니까?

우선, 우리는 const 와 함께 enum 구현의 또 다른 더 바람직한 방법을 사용해야 합니다. Why?

// describe an enum object
const  MySuperEnum = {
  ONE: 'ONE',
  TWO: 'TWO'
} as const

// create the MySuperEnum type
type MySuperEnum = typeof MySuperEnum[keyof typeof MySuperEnum];

as const는 무엇입니까? 자세한 내용은 click를 참조하십시오.

시원한! 이제 MySuperEnum가 다른 방식으로 정의됩니다!
MyMoreSuperEnum로 확장될 새로운 MySuperEnum를 생성할 때입니다.

// describe an enum object
const  MyMoreSuperEnum = {
  ...MySuperEnum,
  THREE: 'THREE'
} as const

// create the MyMoreSuperEnum type
type MyMoreSuperEnum = typeof MyMoreSuperEnum[keyof typeof MyMoreSuperEnum];


이익. 이 트릭이 도움이 되길 바랍니다.

좋은 웹페이지 즐겨찾기