Redux如何使用"撰写"使用Typescript

时间:2017-06-09 14:16:24

标签: typescript redux

我在Typescript中使用compose函数有点问题,我总是收到错误。 .d.ts中的类型定义也很混乱。例如:

type Props = { t: number }; 
const foo = (props: {}) => <div {...props} />;
const moo = (props: Props) => <div {...props} />;
const bar = (props: Props) => <div {...props} />;
const Dar = compose(foo, moo)(bar);

const Test = () => <Dar />;

有几个问题。它抱怨说&#34; bar&#34;没有&#34; foo&#34;参数(它实际上有)。

另外,我不能使用,因为Dar被评估为JSX.Element而不是无状态函数。任何IDEA都有可能的例子,如何在Typescript中使用compose?

感谢。

2 个答案:

答案 0 :(得分:1)

TypeScript的推断从左到右起作用,通用的compose函数从右到左组成函数,并且可能导致错误的类型。

您可以使用从左到右组成的合成功能,例如flow

答案 1 :(得分:0)

compose是一个组合两个函数的函数,假设第一个函数的输出类型与第二个函数的输入类型匹配。

const compose = (f,g) => x => f(g(x))

所以你在撰写的文字中说的是你想要bar(这是PropsJSX.Element的函数)作为{{1}的参数这也是从mooProps的函数,然后获取结果并将其应用于JSX.Element

  

问题是foo不接受mooProps的功能,它接受JSX.Element

如果你想要返回一个“无状态函数”,你需要使用这个模板来告诉Typescript你想要的是什么

Props