【问题标题】:flowtype jsx element, weird bug with Element<*> (asterisk)flowtype jsx 元素,Element<*> 的奇怪错误(星号)
【发布时间】:2018-02-07 22:34:54
【问题描述】:

如下代码,我使用Element&lt;*&gt;作为jsx元素的类型。

type Prop = {
    style?: StyleSheet.styles | Array<StyleSheet.styles>;
    face: Element<*>;

    disabled: boolean;
    anotherProp: any;
}

Element&lt;*&gt;(星号)的用法由flowtype编译器提示。

但是,Element&lt;*&gt; 之后定义的每个类型都丢失了。

如果我将代码更改为Element&lt;any&gt;,那么我的类型会正确显示。

但是输入any 并不是我真正需要的。我该怎么做才能让它发挥作用?

我使用flowtype with vscode,但似乎错误来自flowtype 编译器(或来自flowtype vscode plugin),因此可能与vscode 本身无关。

【问题讨论】:

  • @zvona 是的,我尝试了逗号和分号,它们似乎以相同的方式工作(但在这种情况下都不起作用)

标签: reactjs react-native visual-studio-code flowtype


【解决方案1】:

目前编辑器集成存在问题,导致某些类型,尤其是使用 * 的类型,尽管如此,请注意该类型实际上是正确的,并且将根据您编写的内容进行检查,即使它在 IDE 中打印错误.

例如,此代码因类型错误而失败,但如果实际使用了 any 类型,则它会通过:

type thingy = {
  style: number,
  stuff: Array<*>,
  things: string
}

let t: thingy = {
  style: 19,
  stuff: 2, 
  things: "what"
}

【讨论】:

  • 谢谢。你有关于这个特定类型的编辑器问题的链接吗?
  • 关于打印类型有几个问题:github.com/facebook/flow/… 这是一种情况。
  • 我几乎在每种类型上都得到了(unknown) type-at-pos 命令...哎呀。即使是一个非常简单的例子:type Prop = 1 | 2。但是类型的行号是正确的。
猜你喜欢
  • 2019-05-29
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 2012-08-07
相关资源
最近更新 更多