需要帮助修复或抑制此tslint错误:TS2742

问题描述

我在React Native项目中拥有此文件

import styled,{ withTheme } from 'styled-components';
import { BaseText } from '../BaseText';

export interface BodyProps {
  textAlign?: string;
  fontSize?: string;
}

export const Body = withTheme(styled(BaseText)<BodyProps>`
  text-align: ${props => (props.textAlign ? props.textAlign : 'center')};
  font-size: ${props => (props.fontSize ? props.fontSize : '16px')};
`);

我将本机反应从0.61.5升级到0.63.2,并且在使用withTheme的任何地方都开始出现此皮棉错误

TS2742:如果没有 参考'react-native / node_modules / @ types / react'。这可能 不便携。类型注释是必需的。

@H_404_15@我尝试过,但错误仍然存​​在:

  1. this post之后,我添加import React from "react";
  2. 试图通过在/* tslint:disable */声明上方添加Body来禁用tslint
  3. 试图通过在// tslint:disable-next-line声明上方添加Body来禁用tslint
  4. 播放了依赖版本。目前我有"@types/react": "^16.9.49"

解决方法

通过“参考”,TypeScript表示您正在处理的特定项目的package.json中没有(常规/ dev /对等/可选)依赖项。您可能要依靠相邻的软件包来声明依赖关系,或者巧合地全局安装在计算机上。

要解决此问题,请将@types/react作为devDependency添加到您的package.json中,并使用您选择的软件包管理器进行安装。这将满足TypeScript的要求,因为它将确保您的程序包绝对引用了所需的(反应)类型,而不仅仅是偶然。

npm i @types/react --save-dev
yarn add @types/react -D

我们还应该注意,“ tslint”和tslint:disable是指TSLint,这是一种现已弃用的工具,与TypeScript 不相同。 TSLint是一个单独的库,它向TypeScript代码添加了额外的静态分析(“ lint”)。换句话说,TSLint用于TypeScript,而ESLint用于JavaScript。

您看到的错误是TypeScript错误,而不是TSLint错误。

,

或者,检查您的package-lock.jsonyarn.lock -是否列出了多个@types/react版本?尝试将package.json更改为与@types/react列出的依赖项具有相同的react-native版本。

可能是您使用@types/react React类型的多个版本,并且组件对于从哪个类型导入感到困惑。

,

我通过给它any类型(它不确定是否是真正的解决方法)来修复了

export const Body: any = withTheme(

我也可以使用WithThemeFnInterface<DefaultTheme>类型,但我认为它还存在其他错误。