绑定元素“组件”隐式具有“任何”类型.ts [重复]

Posted

技术标签:

【中文标题】绑定元素“组件”隐式具有“任何”类型.ts [重复]【英文标题】:Binding element 'Component' implicitly has an 'any' type.ts [duplicate] 【发布时间】:2019-12-13 19:03:31 【问题描述】:

这里是新手。我对以下代码有疑问。我想定义一个受保护的“仪表板”页面,如下所示,但是给了我这个绑定错误:

Binding element 'Component' implicitly has an 'any' type.ts(7031)


import * as React from "react";
import  Route, Router, Redirect  from "react-router-dom";
import Dashboard from "../features/dashboard";
import LoginContainer from "../features/login/containers/LoginContainer";
import SignUpContainer from "../features/signup/containers/SignUpContainer";
import  createBrowserHistory  from "history";

const history = createBrowserHistory();

export default () => (
  <Router history=history>
    <Route path="/" component=LoginContainer />
    <Route path="/login" component=LoginContainer />
    <Route path="/register" component=SignUpContainer />

    <PrivateRoute path="/dashboard" component=Dashboard />
  </Router>
);

function PrivateRoute( component: Component, ...rest ) 
  return (
    <Route
      ...rest
      render=props =>
        localStorage.getItem("MyStoredUser") ? (
          <Component ...props />
        ) : (
          <Redirect
            to=
              pathname: "/login"
            
          />
        )
      
    />
  );

基本上我使用的代码与此处相同:Protected routes and authentication with React Router v4 和 eact Router - Redirects

我做错了什么?

【问题讨论】:

【参考方案1】:

您还没有定义任何类型,并且您显然已将 typescript 配置为禁止隐含任何参数。您需要添加类型以满足打字稿编译器:

import * as React from 'react';
import Route, Router, Redirect, RouteProps from 'react-router';

const PrivateRoute: React.FC<RouteProps> = ( component: Component, ...rest ) => 
  return (
    // ... etc
  );

【讨论】:

以上是关于绑定元素“组件”隐式具有“任何”类型.ts [重复]的主要内容,如果未能解决你的问题,请参考以下文章

元素隐式具有“任何”类型,因为类型“窗口”没有索引签名?

TS7053:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“用户经济”

TypeScript - ts(7053):元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引

错误 TS2602:JSX 元素隐式具有类型“任何”,因为全局类型“JSX.Element”不存在

映射打字稿参数:绑定元素“列”隐式具有“任何”类型

src/app/app.component.ts(391,9) 中的错误:错误 TS7017:元素 > 隐式具有“任何”类型,因为类型“Foo”没有索引签名