流:解构。 React/Preact 中缺少注释
Flow : destructuring. Missing annotation in React/Preact
刚开始使用 Flow,但似乎无法理解它要我为解构对象(例如 props)添加类型做什么
即
render({ count }, { displayHelp }) {
抛出类似
的错误
16: render({ count }, { displayHelp }) {
^^^^^^^^^ destructuring. Missing annotation
当我添加注释时它仍然抱怨
17: render({ count: number }, { displayHelp }) {
^^^^^^^^^^^^^^^^^ destructuring. Missing annotation
如果有人能指出,我显然在这里遗漏了一些非常简单的东西?
执行 { count: number }
的问题是这与 destructuring assignment 的 ES6 语法冲突,您可以在其中使用 { a: b } = c
以使用键 a
获取值来自 c
并将其命名为 b
,即:
const c = { a: 1 }
const { a: b } = c
//b is now a constant with value 1
目前在 Flow 中还没有很好的解决方法,但这似乎有效(虽然它很丑):
render({...}: { count: number }, { displayHelp }) {
现在最好的方法似乎是创建一个自定义 type
来捕获您的道具:
type propsForThisComponent = {
propA: someType
propB: anotherType
...
}
然后做:
render(props: propsForThisComponent) {
这会进行类型检查,尽管它会强制您以 props.propName
.
的形式访问所有道具
你需要做这样的事情:
render({count}: {count: number}, {displayHelp}: {displayHelp: boolean}) { ...
不幸的是,我认为没有更简洁的方法来做到这一点。
这对我有用
type Props = {
counter?: number
};
const Component = ({counter}: Props) => (
<div className="App">
{counter}
</div>
);
刚开始使用 Flow,但似乎无法理解它要我为解构对象(例如 props)添加类型做什么
即
render({ count }, { displayHelp }) {
抛出类似
的错误 16: render({ count }, { displayHelp }) {
^^^^^^^^^ destructuring. Missing annotation
当我添加注释时它仍然抱怨
17: render({ count: number }, { displayHelp }) {
^^^^^^^^^^^^^^^^^ destructuring. Missing annotation
如果有人能指出,我显然在这里遗漏了一些非常简单的东西?
执行 { count: number }
的问题是这与 destructuring assignment 的 ES6 语法冲突,您可以在其中使用 { a: b } = c
以使用键 a
获取值来自 c
并将其命名为 b
,即:
const c = { a: 1 }
const { a: b } = c
//b is now a constant with value 1
目前在 Flow 中还没有很好的解决方法,但这似乎有效(虽然它很丑):
render({...}: { count: number }, { displayHelp }) {
现在最好的方法似乎是创建一个自定义 type
来捕获您的道具:
type propsForThisComponent = {
propA: someType
propB: anotherType
...
}
然后做:
render(props: propsForThisComponent) {
这会进行类型检查,尽管它会强制您以 props.propName
.
你需要做这样的事情:
render({count}: {count: number}, {displayHelp}: {displayHelp: boolean}) { ...
不幸的是,我认为没有更简洁的方法来做到这一点。
这对我有用
type Props = {
counter?: number
};
const Component = ({counter}: Props) => (
<div className="App">
{counter}
</div>
);