홈>
기본적으로 입력 구성 요소를 작성하기 위해 입력하고 있습니다.
select
내 응용 프로그램의 열거 형에 대해 일련의 단일 라이너로 구체적인 유형에 대해 정의하십시오. 그러나 내가 시도하는 것이 무엇이든 입력 문제가 발생하는 것 같습니다. 내가 가진 가장 가까운 것은 이것입니다 :
import React from 'react';
type Props<T> = {
enumType: T;
value?: keyof T;
};
type IEnumInput<T = {}> = React.FC<Props<T>>;
const EnumInput: IEnumInput = ({ enumType, value }) => {
const options = Object.values(enumType).map((x: any) => x.toString());
return (
<div>
Will select from {options.join(',')}, current value is {value}
</div>
);
};
type CProps<T> = {
value?: keyof T;
};
enum MyEnum {
A = 'a',
B = 'b',
C = 'c',
}
const MyEnumInput = (props: React.PropsWithChildren<CProps<MyEnum>>) =>
EnumInput({ ...props, enumType: MyEnum });
내가 얻는 오류는
Type '{ enumType: typeof MyEnum; value?: number | "big" | "link" | "small" | "sub" | "sup" | "toString" | "charAt" | "charCodeAt" | "concat" | "indexOf" | "lastIndexOf" | "localeCompare" | ... 35 more ... | undefined; children?: React.ReactNode; }' is not assignable to type 'Props<{}>'. Types of property 'value' are incompatible.
Type 'number | "big" | "link" | "small" | "sub" | "sup" | "toString" | "charAt" | "charCodeAt" | "concat" | "indexOf" | "lastIndexOf" | "localeCompare" | "match" | "replace" | "search" | ... 32 more ... | undefined' is not assignable to type 'undefined'.
Type 'number' is not assignable to type 'undefined'.
이것이 올바른 접근법입니까? 그렇다면 내가 뭘 잘못하고 있습니까?
- 답변 # 1
관련 자료
- typescript에서 제네릭 유형 및 공용체 유형을 사용하는 방법
- reactjs - 동적 구성 요소의 기본 일반 (ReactTS)
- java 제네릭 - 하나의 함수 서명을 사용하여 두 가지 제네릭 형식을 처리하는 깔끔한 방법
- c# - 일반 유형으로 캐스팅이 작동하지 않는 이유는 무엇입니까?
- typescript - 하나의 구체적 유형과 하나의 유추 유형으로 일반 함수를 정의하는 방법
- Java의 여러 유형의 HashMap을 일반 HashMap에 결합
- rust - 구체적인 유형의 일반 매개 변수에서 어떻게 일치합니까?
- f# - 일반 중첩 레코드의 유형 간 정적 캐스트
- javascript - TypeScript checkJs를 사용하여 JSDoc에서 일반 유형을 확장하는 방법은 무엇입니까?
- reactjs - 일반 React 컴포넌트에서 속성 지정
- typescript - 몇 가지 유형 중 하나 일 수있는 인수를 설명하는 일반 유형
- java - 여러 제네릭 형식
- graphql - 인터페이스 및 콘크리트 유형에 대한 리졸버 결합
- casting - Angular의 canDeactivate Guard에 전달 된 일반 구성 요소 속성을 얻는 방법은 무엇입니까?
- python - "typeerror - 제네릭 유형에 대한 매개 변수는 유형이어야합니다 0을 얻었습니다" 내 기능에서
- java - 일반 유형으로 Flink의 AggregateFunction을 구현할 수 있습니까?
- c# - int, decimal, Datetime 유형에서 null로 일반
- reactjs - React 컴포넌트의 prop 인수에 대한 동적 제네릭
- swift - 일반 유형에서 구체적인 유형까지 수행 할 수 없습니다
- reactjs - 흐름 - 일반 유형을 사용하는 옵션 소품
TLDR;
사용하다
typeof MyEnum
대신에MyEnum
.긴 대답 :
enum을 값으로 혼동하여 enum을 유형으로 혼동합니다.
액세스 할 때
MyEnum.A
변환 된 js에서 일반 객체 인 값으로 사용하고 속성 '.A'에 액세스하십시오.당신이 참조 할 때
MyEnum
유형으로, 실제로 해당 키-값 구조체의 값 부분을 참조하고 있습니다.'a' | 'b' | 'c'
.일반 객체의 유형을 얻으려면
MyEnum
, 당신은 사용해야합니다typeof MyEnum
.참고로, TS에서도 같은 일이 발생합니다.
선언 할 때
class Dog {}
,Dog
유형과 값입니다.언급 할 때
Dog
유형으로서이 클래스의 인스턴스 유형입니다. 언급 할 때Dog
값으로Dog
클래스 자체, 즉 인스턴스가 아닌 생성자 함수.이제 유형을 얻으려면
Dog
생성자 함수를 사용해야합니다.typeof Dog
.