스크립트 열거형에 문자열 값을 할당할 수 없습니다(Initializer 유형 문자열을 변수 유형에 할당할 수 없음).
TypeScript 2.4 이후부터는 String Enums가 기능인 것 같습니다.
그러나 다음은 작동하지 않습니다.
enum Foo {
A = "A",
B = "B"
}
var foo : Foo = "A";
변수 유형 Foo에 이니셜라이저 유형 문자열을 할당할 수 없습니다.
문자열 리터럴 작업:
type Foo = "A" | "B";
하지만 만약 내가 사용하고 싶다면?enum
이 일을 피할 방법이 있습니까?
인덱스 식을 사용하여 열거값을 가져올 수 있습니다.
enum Foo {
A = "A",
B = "BB"
}
var foo : Foo = Foo["A"];
var fooB : Foo = Foo["B"];
키는 값이 아닌 구성원의 이름이 됩니다.
형식 어설션을 사용할 수도 있지만 잘못된 값을 할당해도 오류가 발생하지 않습니다.
var foo : Foo = "A" as Foo;
var foo : Foo = "D" as Foo; // No error
~하듯이Foo
사용할 수 있는 열거형입니다..
의 가치에 접근할 수 있을 뿐만 아니라enum
아래와 같이
var foo : Foo = Foo.A;
질문 자체에 대한 직접적인 대답은 아니지만(이는 열거형이 아니라 파생형에 할당되기 때문에), 저는 이것이 제가 할당할 수 있도록 허용하는 문제를 해결하는 것이라는 것을 발견했습니다.string
그리고 그것이 열거형의 일부라는 것을 보장하고, 심지어 내가 중복되는 것을 피할 수 있게 해줍니다.A = "A"
정말 중요한 것은A
.
사용할 수 있습니다.keyof
에 있는 속성을 열거합니다.typeof
열거형(Foo
)
enum Foo {
A,
B
}
var foo : keyof typeof Foo = "A"; // OK
var foo : keyof typeof Foo = "C"; // ERROR
또는 객체:
interface Bar {
type: keyof typeof Foo
}
let obj: Bar = {
type: "A" // OK
}
[*] 다른 답변 중 하나를 승인된 것으로 표시하고 참조용으로 여기에 보관합니다.
유형 스크립트 열거형 문서에 설명된 대로
다양한 방법으로 사용할 수 있습니다.
Enum.A // Good way
Enum["A"] // Bad way
Enum[variable] // Good way
당신의 경우에는
enum Foo {
A = "A",
B = "B"
}
// Bad way
const example1 : Foo = Foo["A"];
// Good way
const example2 : Foo = Foo.A;
// Good way
const example3 : Foo = Foo[variable];
의 사용을 피해야 합니다.example1
에 초점을 맞춥니다.example2
그리고.example3
어떤 경우에도, 쓸 의미가 없습니다."A"
.
항상 선호Enum.A
변수를 열거형으로 캐스팅하려면Enum[variable]
.
언급URL : https://stackoverflow.com/questions/50464141/cannot-assign-a-string-value-to-typescript-enum-initializer-type-string-not-ass
'programing' 카테고리의 다른 글
ID가 Next 페이지 매개 변수에 없을 때 ID별 API 리소스를 가져오는 방법 (0) | 2023.07.06 |
---|---|
SQL Server 2008에서 SQL Profiler는 어디에 있습니까? (0) | 2023.07.06 |
왼쪽 외부 조인에서 중복 제거 (0) | 2023.07.06 |
*nix 서버에서 ASP.NET Core용 프로덕션에서 사용 중인 웹 서버는 무엇입니까? (0) | 2023.07.06 |
Vuex 상태에서 kazon/vue-i18n 사용 (0) | 2023.07.06 |