TS는 보간된 prop 값의 종류를 다음과 같이 생각하는 것 같습니다.
으아아아문자열이 아닌가요(구별 가능한 공용체에 사용되는 경우)?
아래의 세 번째 p3
实例会丢失 ev
필드에 추론을 입력하세요. 단, href가 보간된 비문 문자열인 경우에만 해당됩니다.
TS 샌드박스 완전 재현
P粉6175971732024-03-31 00:33:04
업데이트 TS5.2+
이 버그는 microsoft/TypeScript#53907에서 수정되었으므로 TypeScript 5.2부터 문제의 코드는 아무런 변경 없이 예상대로 작동합니다.
의 플레이그라운드 링크를 사용하세요.TS5.1에 대한 원래 답변-
알고 보니예, 이것은 제가 Stack Overflow 질문에 대한 응답으로 제출한 microsoft/TypeScript#53888과 같은 TypeScript의 버그입니다. 컴파일러는 차별 속성 href
가 유형 string
이고 정의되지 않음
이 아니라는 것을 인식하는 것 같지만 이는 너무 늦게 발생합니다. 컨텍스트에 따라 href
是 string
类型,而不是 undefined
,但这发生得太晚了 根据上下文输入 onClick
onClick
콜백 매개변수를 입력합니다. 아마도 템플릿 텍스트 보간은 문제를 일으키는 것을 지연시키는 데 충분할 것입니다.
GitHub 문제는 백로그에 있습니다. 이는 TS 팀이 이 문제를 곧 고칠 계획이 없다는 뜻입니다... 따라서 도움이 필요합니다 a>로 표시되어 커뮤니티 구성원의 끌어오기 요청을 수락한다는 뜻입니다. 따라서 이 문제를 가능한 한 빨리 해결하려는 사람은 누구나 직접 수정 사항을 제공하는 것을 고려해야 합니다.
그 동안 제가 제안하는 해결 방법은 문자열 보간을 미리 수행하고 해당 유형을 미리 알 수 있도록 const
에 저장하는 것입니다.
성가신 일이지만(JSX의 경우 훨씬 더 성가신 일이겠지만) 적어도 작동합니다!