반응형
스크립트 열거값을 배열로 입력합니다
TypeScript의 enum 값을 배열로 얻을 수 있나요?
이런 식으로:
enum MyEnum {
FOO = 'foo',
BAR = 'bar'
}
된다
['foo', 'bar']
이 기능은 숫자 숫자와 함께 작동해야 하며 유형 검사를 수행합니다:
type EnumObject = {[key: string]: number | string};
type EnumObjectEnum<E extends EnumObject> = E extends {[key: string]: infer ET | string} ? ET : never;
function getEnumValues<E extends EnumObject>(enumObject: E): EnumObjectEnum<E>[] {
return Object.keys(enumObject)
.filter(key => Number.isNaN(Number(key)))
.map(key => enumObject[key] as EnumObjectEnum<E>);
}
예를 들어 다음과 같습니다:
enum NumEnum {
A,
B,
C,
}
// The type is inferred as NumEnum[]
let numEnumValues = getEnumValues(NumEnum);
자세한 내용은 여기에 올렸습니다:
열거를 위한 가장 간단한 방법은 다음을 사용하는 것이다
enum MyEnum {
FOO = 'foo',
BAR = 'bar'
}
console.log(Object.values(MyEnum));
예, 다음을 사용할 수 있습니다:
Object.values(MyEnum)
enum은 컴파일 후 JS 개체이기 때문에:
var MyEnum;
(function (MyEnum) {
MyEnum["FOO"] = "foo";
MyEnum["BAR"] = "bar";
})(MyEnum || (MyEnum = {}));
완전하게 입력된 코드의 경우 연산자의 도움을 받아 값 목록을 유형으로 추론할 수 있습니다:
enum MyEnum {
FOO = 'foo',
BAR = 'bar'
}
type MyEnumValue = `${MyEnum}`
// => type MyEnumValue = "foo" | "bar"
const values: MyEnumValue[] = Object.values(MyEnum)
// => ["foo", "bar"]
참조 기사:
편집:
임호 @표도르의 용액은 스트링넘을 포함하기 때문에 더 깨끗합니다:
const enumAsArray = Object.values(MyEnum).filter(value => typeof value === 'string')
반응형
'개발하자' 카테고리의 다른 글
주피터 노트북 셀의 내용을 이미지로 내보내기 (0) | 2023.09.23 |
---|---|
하나의 YAML 파일에서 여러 종류의 Kubernetes API에 대해 client-go to 'kubectl apply'를 직접 사용하는 것 (1) | 2023.09.22 |
TypeScript에서 "not assignable to parameter of type never" 오류는 무엇인가? (0) | 2023.09.21 |
주피터 노트북의 테마를 변경하시겠습니까? (0) | 2023.09.21 |
주피터 노트북의 플롯 옆에 데이터 프레임을 표시하는 방법 (0) | 2023.09.20 |