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

时间:2018-09-21 12:22:01

标签: reactjs typescript react-native visual-studio-code eslint

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

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

[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?

此问题的一个子错误是<Icon />的每个属性都有错误:

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

它只说颜色和类型。

1 个答案:

答案 0 :(得分:2)

当文件包含.tsx之类的JSX语法时,使用文件扩展名.ts代替<Icon ... />