将 TypeScript 泛型与“...rest”运算符一起使用
Using TypeScript generic with `...rest` operator
这就是我正在做的事情:
export default <T extends { color: string },>(props: T) => (
<Svg height="20px" width="20px" version="1.1" viewBox="0 0 20 20" {...props:T}>
<G
id="Icons-/-16-/-Arrow-Left"
fill="none"
fillRule="evenodd"
stroke="none"
strokeWidth="1"
>
<Path
id="icon"
d="M7.34243727,10.0024497 L14.8286235,2.93169993 C15.04831,2.7247463 15.0578735,2.37909552 14.8510294,2.15985572 C14.6436388,1.94061593 14.2753088,1.9529021 14.0558955,2.15985572 L6.17132265,9.60547002 C6.0620259,9.70867381 6,9.8520124 6,10.0024497 C6,10.1526139 6.0620259,10.2962255 6.17132265,10.3994293 L14.0558955,17.8510106 C14.2753088,18.0579642 14.621233,18.0481353 14.8286235,17.8288955 C15.0354676,17.6096557 15.0256309,17.2640049 14.8062177,17.0567783 L7.34243727,10.0024497 Z"
fill={props.color || "#363C52"}
/>
</G>
</Svg>
);
但由于某种原因,我遇到了这种错误:
寻找正确的使用方法
因为您将 JSX 与 TypeScript 一起使用,它认为泛型实际上是一个 JSX 元素,因此它正在寻找标识符 T
用作元素。
你可以通过使用命名函数来解决这个问题(你可能总是应该使用 TypeScript + JSX 中的组件):
export default function MyComponent<T>(props: T) {
return ...;
}
或者如果你必须有一个箭头函数才能生存,你可以使用@PYTHONDEVELOPER999 的技巧添加一个尾随逗号以便它被解析为通用的:
export default <T,>(props: T) => (...);
这就是我正在做的事情:
export default <T extends { color: string },>(props: T) => (
<Svg height="20px" width="20px" version="1.1" viewBox="0 0 20 20" {...props:T}>
<G
id="Icons-/-16-/-Arrow-Left"
fill="none"
fillRule="evenodd"
stroke="none"
strokeWidth="1"
>
<Path
id="icon"
d="M7.34243727,10.0024497 L14.8286235,2.93169993 C15.04831,2.7247463 15.0578735,2.37909552 14.8510294,2.15985572 C14.6436388,1.94061593 14.2753088,1.9529021 14.0558955,2.15985572 L6.17132265,9.60547002 C6.0620259,9.70867381 6,9.8520124 6,10.0024497 C6,10.1526139 6.0620259,10.2962255 6.17132265,10.3994293 L14.0558955,17.8510106 C14.2753088,18.0579642 14.621233,18.0481353 14.8286235,17.8288955 C15.0354676,17.6096557 15.0256309,17.2640049 14.8062177,17.0567783 L7.34243727,10.0024497 Z"
fill={props.color || "#363C52"}
/>
</G>
</Svg>
);
但由于某种原因,我遇到了这种错误:
寻找正确的使用方法
因为您将 JSX 与 TypeScript 一起使用,它认为泛型实际上是一个 JSX 元素,因此它正在寻找标识符 T
用作元素。
你可以通过使用命名函数来解决这个问题(你可能总是应该使用 TypeScript + JSX 中的组件):
export default function MyComponent<T>(props: T) {
return ...;
}
或者如果你必须有一个箭头函数才能生存,你可以使用@PYTHONDEVELOPER999 的技巧添加一个尾随逗号以便它被解析为通用的:
export default <T,>(props: T) => (...);