【发布时间】:2019-03-28 20:43:33
【问题描述】:
我正在使用 TypeScript 和 React-Redux 构建一个 React Native 应用程序。
我使用 connect 连接了我的组件:
import { addTodo } from "../../redux/actions";
export interface Props {
addTodo: (todo: Todo) => void;
}
// ... component code
handleAdd = (todo: Todo) => {
const { addTodo, ... } = this.props; // ... = more destructuring
// some code ... eventually:
addTodo(todo);
}
export default connect(
mapStateToProps,
{ addTodo }
)(MyComponent);
现在的问题是,TSLint 抱怨一个阴影变量:
[tslint] Shadowed name: 'addTodo'
这感觉像是 TypeScript 的错误,没有识别 React-Redux 的功能。我的意思是 Redux 文档中教导了以这种方式将 dispatch 映射到 props。
我做错了吗?还是在使用 TypeScript 时必须以不同的方式执行此操作?
【问题讨论】:
-
您已导入
addTodo并从this.props解构了相同的变量。这是明显的阴影案例,您可以更改其中一个的名称以使其消失 -
@BoyWithSilverWings 是的,谢谢。介意将其发布为答案,以便我标记它吗?
-
我在使用 JS 和 ESLint 以及 Airbnb 的风格指南时遇到了基本相同的问题。这种风格指南禁止两者:不解构
props和隐藏变量名称,所以我觉得我必须违反一个规则或另一个。官方的处理方式是什么。我认为你应该重新提出这个问题,@J.Hesters。干杯。 :)
标签: reactjs typescript redux react-redux tslint