我是一名有帮助的助手,以下是您需要翻译的内容:
我尝试将其转换为TypeScript,但在Visual Studio中,
我不太理解 lambda 函数中的
任何建议?
参考资料:
我正在尝试将JSX中定义备用路由组件的方式转换为等效的TypeScript TSX文件。(1)
JSX语法如下:
import React from 'react';
import { Route, Redirect } from 'react-router-dom';
export const PrivateRoute = ({ component: Component, ...rest }) => (
<Route {...rest} render={props => (
localStorage.getItem('user')
? <Component {...props} />
: <Redirect to={{ pathname: '/login', state: { from: props.location } }} />
)} />
)
我尝试将其转换为TypeScript,但在Visual Studio中,
<Component
部分(如下所示)被下划线标记,并且TypeScript编译器告诉我(TS) JSX element type 'Component' does not have any construct or call signatures.
我不太理解 lambda 函数中的
({ component: Component, ...rest })
语法。这是我在 TypeScript 中编写它时所达到的程度。export function PrivateRoute(Component: React.Component, ...rest: any[]) {
return (
<Route {...rest} render={props => (
localStorage.getItem('user')
? <Component {...props} />
: <Redirect to={{ pathname: '/login', state: { from: props.location } }} />
)} />
);
};
任何建议?
参考资料:
({ component: Component, ...rest })
的意思是通过解构从对象中获取一个component
属性,并将其重命名为函数作用域中的Component
,并通过 "rest" 运算符(即...
)将对象的其余属性放入名为rest
的变量中。希望这能澄清问题,我不懂 TS,所以无法帮助您重构代码 :) - SrThompson