TypeScript 无法识别 React 正在我的 VSCode 中的 linter 中导入和使用

Posted

技术标签:

【中文标题】TypeScript 无法识别 React 正在我的 VSCode 中的 linter 中导入和使用【英文标题】:TypeScript does not recognize that React is being imported and used in my linter in VSCode 【发布时间】:2019-02-25 20:39:36 【问题描述】:

我正在使用带有 TypeScript 的 React Native 构建一个应用程序。我使用 React Navigation 进行导航。

在我的导航器中,我使用来自 React Native Elements 的图标作为选项卡。为了使用它们,我必须导入 React。但是我的 linter 不承认我在使用它。它说:

[ts] 'React' is declared but its value is never read.

这是我的代码:

import DetailScreen from "../screens/Detail";
import HomeScreen from "../screens/Home";
import LoadingScreen from "../screens/Loading";
import OptionsScreen from "../screens/Options";
import SettingsScreen from "../screens/Settings";
import React from "react";
import  Platform  from "react-native";
import  Icon  from "react-native-elements";
import 
  createBottomTabNavigator,
  createDrawerNavigator,
  createStackNavigator,
  createSwitchNavigator,
  NavigationSceneRendererProps,
  NavigationTransitionProps,
  StackViewTransitionConfigs,
  TabScene,
  TransitionConfig
 from "react-navigation";

// Some other code

const HomeStack = createStackNavigator(
   DetailScreen, HomeScreen, OptionsScreen ,
  // TODO: Rename the config from 'CustomTransitionConfig' to 'dynamicModalTransition'.
   initialRouteName: "HomeScreen", transitionConfig: dynamicModalTransition 
);

HomeStack.navigationOptions = 
  tabBarLabel: "Home",
  tabBarIcon: ( tintColor : TabScene) => <Icon name="ios-home" type="ionicon" color=tintColor />
;

const SettingsStack = createStackNavigator( SettingsScreen );

SettingsStack.navigationOptions = 
  tabBarLabel: "Settings",
  tabBarIcon: ( tintColor : TabScene) => <Icon name="ios-cog" type="ionicon" color=tintColor />
;

const MainNavigator = Platform.select(
  ios: createBottomTabNavigator( HomeStack, SettingsStack ),
  android: createDrawerNavigator( HomeStack, SettingsStack )
);

const RootSwitch = createSwitchNavigator(
   LoadingScreen, MainNavigator ,
   initialRouteName: "MainNavigator" 
);

export default RootSwitch;

这里发生了什么?为什么 TypeScript 无法识别 React?

其中的一个子错误是&lt;Icon /&gt;s 属性每个都有错误:

[ts] '>' expected.
[ts] Cannot find name 'name'.
any

它只是分别表示颜色和类型。

【问题讨论】:

试试import * as React from "react"; @zeh 谢谢你的帮助!我做了,但没有用。 【参考方案1】:

当文件包含像 &lt;Icon ... /&gt; 这样的 JSX 语法时,使用文件扩展名 .tsx 而不是 .ts

【讨论】:

以上是关于TypeScript 无法识别 React 正在我的 VSCode 中的 linter 中导入和使用的主要内容,如果未能解决你的问题,请参考以下文章

绝对导入:React 和 Typescript

无法在 redux 、 react/typescript 中使用 rootReducer

如何让 Typescript 识别 Apollo 查询的类型

无法将 Redux 商店连接到 React Typescript App

如何使用 Typescript 将 jest.spyOn 与 React 函数组件一起使用

无法使用 Typescript 中的 React 钩子在 Ag-Grid 中获取 gridApi