我使用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定义文件:
这是Flow-typed React(Native)项目的常见行为吗?我认为这很奇怪,因为这两种语言不同。如果没有,我如何让VSCode改为使用Flow定义?
答案 0 :(得分:0)
我假设:
Foo
组件的扩展名为.js
.ts
时,VSCode对: JSX.Element
个文件中仅允许的类型没有咆哮。这表明VSCode设置为使用Flow而不是Typescript。意思是你的错误看起来像这样:
我正在使用this extension。
假设这是真的,您可以像这样导入JSX名称空间:
import JSX from 'react';
如果您忘记了return
声明,那么会发出以下编译器警告:
请注意,您需要JSX.Element
上的类型参数。编译器将接受JSX.Element<any>
甚至JSX.Element<>
,但不接受JSX.Element
。