까다로운 TypeScript 문제가 있습니다.
소품 크기가 있는 아이콘 구성 요소가 있다고 가정해 보겠습니다. 크기는 "2", "4", "6"이 될 수 있습니다. 이 값을 미리 정의된 tailwind 클래스에 매핑합니다.
그래서 이렇게 입력합니다
으아아아모든 것이 괜찮습니다. 하지만 화면 크기에 따라 다른 크기를 갖고 싶다면 어떻게 해야 할까요? 그래서 원활하게 진행되는 좋은 문법을 갖도록 노력하고 싶습니다.
그래서 아이콘 구성 요소를 다음과 같이 다시 작성했습니다.
으아아아이 기능은 훌륭합니다. 그런데 어떻게 입력하나요? TypeScript가 앞으로 정규식을 지원한다는 내용을 읽었습니다. 이렇게 하면 작업이 더 쉬워질 것입니다. 그런데 지금 이것을 입력해도 될까요?
이것은 실제 구성 요소가 아니므로 개선 방법에 대한 좋은 제안을 제공하지 마십시오. 제가 코딩한 방식대로 작동하도록 크기 속성을 입력하는 방법이 궁금합니다.
먼저
으아아아sizeMap
를 전역 범위로 추출하고 const Assert를 추출하여 컴파일러에게 이것이 불변 상수임을 알리고 유형 확장을 제한해야 합니다.다음으로
으아아아sizeMap
키 유형을 가져와야 합니다.구현: 문자열을 받아들이고 문자열이 유효하면 이를 반환하는 유형을 생성하고, 그렇지 않으면
never
를 반환합니다.의사 코드:
유형이 허용되도록
T
- 要验证的字符串,Original
- 原始字符串,AlreadyUsed
- 사용된 키의 결합.T
가 빈 문자열인 경우반품
ClassName)로 시작하는 경우原始
그렇지 않고T
以大小映射 (ClassName
) 的键开头,不包括AlreadyUsed
,后跟一个空格和剩余的字符串(休息
가 크기 맵의 키(Rest
作为字符串传递以验证Original
,并将AlreadyUsed
이 유형을 재귀적으로 호출하여
T
是尺寸映射的键,不包括AlreadyUsed
그밖에- 가 사이즈 맵의 키이고
를 제외하고
-
그렇지 않으면
原始
AlreadyUsed从不
반품반품
불가Item
添加一个通用参数来表示大小
으아아아
Item에 공통 매개변수를 추가해야 합니다.size
在组件中是可选的,因此我们将在SizeValue
周围添加一个包装器,它将把string | undefined
到string
并将其传递给_SizeValue
크기를 나타내려면으아아아
size는 구성 요소에서 선택 사항이므로string | undefine을 string으로 변환하고 _SizeValue에 전달하는 래퍼를
SizeValue 주위에 추가합니다. , 또한 크기에 대한 기본값을 추가합니다: 🎜 으아아아 🎜사용법: 🎜 으아아아 🎜🎜놀이터🎜🎜