VSCode中的流类型定义在哪里?

时间:2017-10-03 17:15:34

标签: reactjs react-native flowtype

我使用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定义文件:typescript definition for react

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

1 个答案:

答案 0 :(得分:0)

我假设:

  • 您的Foo组件的扩展名为.js
  • 当您添加返回类型.ts时,VSCode对: JSX.Element个文件中仅允许的类型没有咆哮。

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

enter image description here

我正在使用this extension

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

import JSX from 'react';

如果您忘记了return声明,那么会发出以下编译器警告:

enter image description here

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