Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Typescript/tslint的几个问题_Reactjs_Typescript_React Hooks - Fatal编程技术网

Reactjs Typescript/tslint的几个问题

Reactjs Typescript/tslint的几个问题,reactjs,typescript,react-hooks,Reactjs,Typescript,React Hooks,我是打字新手!只是试着做一些基本的注释作为开始 首先,一个进口商品一直在叫喊 其次,类型在对象分解过程中不会被拾取 第三,jsx似乎工作不正常 我的代码 import * as React from "react"; import { useMappedState } from "redux-react-hook"; import TodoItem from "./TodoItem"; type TodosReducer = { todos: [] } const mapState =

我是打字新手!只是试着做一些基本的注释作为开始

首先,一个进口商品一直在叫喊 其次,
类型
在对象分解过程中不会被拾取 第三,jsx似乎工作不正常

我的代码

import * as React from "react";
import { useMappedState } from "redux-react-hook";
import TodoItem from "./TodoItem";

type TodosReducer = {
    todos: []
}
const mapState = ({ todosReducer: TodosReducer }) => ({
  todoCount: todosReducer.todos.length,
  todos: todosReducer.todos
});

export default function TodoList(): HTMLDivElement {
  const { todoCount, todos } = useMappedState(mapState);
  return (
    <div>
      <div>You have {todoCount} todos</div>
      <ul>
        {
            todos.map((todo: string, index: number) => <li key={index} {...todo}>,/li.)
        }
      </ul>
    </div>
  );
}

第三方软件包需要在TypeScript中进行打字
@types/react
应与
react
等一起安装

const mapState = ({ todosReducer: TodosReducer }) => ({ ... })
键入
todosReducer
参数的语法不正确。它被视为ES6解构语法。正确的答案是:

...
type TodosState = { todosReducer: TodosReducer };

const mapState = ({ todosReducer }: TodosState) => ({ ... );
useMappedState
是泛型函数,应该用作:

useMappedState<TodosState>(mapState);
useMappedState(mapState);

为什么是a-1?想解释一下吗?我没有投反对票,但你试图同时解决很多问题。如果你对TS很陌生,考虑一个一个地把它们分类。你会发现最好重复15行代码来回答三个不同的问题吗?你不需要所有的15行。你所需要的就是。如果您在导入React时遇到问题,则为1行。很可能所有的问题之前都是在SO上回答的,所以您将被链接到重复的问题。我有React的类型。那么这是否意味着我也需要为
redux react hook
包提供类型呢?哦,是的!那么我该如何进行todosReducer注释呢?是否对所有对象进行注释?在我的情况下陈述。例如,
const-mapState=(state:StateType)=>({})
其中StateType将是
type-StateType={todosReducer:{todos:[]}
。似乎有点过分了。还有更好的办法吗?我刚刚更新了。是的,应该有类似StateType的东西。您将多次使用它。至于redux react hook.,它是用TS编写的,并且已经包含打字(.d.TS文件)。您可以检查节点_模块中的包内容。确保使用最新版本。我提到了
react
,因为“react”在第1行也做了同样的事情
useMappedState<TodosState>(mapState);