개발하자
스크립트 열거값을 배열로 입력합니다
Cuire
2023. 9. 22. 07:51
반응형
스크립트 열거값을 배열로 입력합니다
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')
반응형