【问题标题】:Where are Flow type definitions in VSCode?VSCode 中的流类型定义在哪里?
【发布时间】:2018-03-14 23:18:09
【问题描述】:

我使用 create-react-native-app 创建了一个新的 React Native 项目,并在文件顶部添加了 // @flow 以进行正确的类型检查。然后我添加了一个基本组件:

export class Foo extends React.component {
  render() {
    <Text>abcd</Text>
  }
}

您可能会注意到第 2 行中缺少 return。由于 flow 不会抱怨它,所以我想添加一个类型注释,例如:

  render(): JSX.Element {

但是,我不知道如何导入 JSX。因此,我跳到我的import React from 'react' 语句的定义文件,看看它的样子。然后我突然注意到index.d.ts中声明的类型定义,即Typescript定义文件:

这是流类型的 React (Native) 项目的常见行为吗?我认为这很奇怪,因为这两种语言不同。如果没有,我如何让 VSCode 使用 Flow 定义?

【问题讨论】:

    标签: reactjs react-native flowtype


    【解决方案1】:

    我假设:

    • 您的Foo 组件具有.js 扩展名
    • 当您添加返回类型 : JSX.Element 时,VSCode 并没有抱怨只允许在 .ts 文件中使用的类型。

    这表明 VSCode 设置为使用 Flow 而不是 Typescript。这意味着您的错误看起来像这样:

    我正在使用this extension

    假设这是真的,你可以像这样导入 JSX 命名空间:

    import JSX from 'react';
    

    如果您忘记了 return 语句,它将发出以下编译器警告:

    请注意,您需要JSX.Element 上的类型参数。编译器将接受JSX.Element&lt;any&gt; 甚至JSX.Element&lt;&gt;,但不接受JSX.Element

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-27
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多