如何解决需要帮助修复或抑制此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'。这可能 不便携。类型注释是必需的。
我尝试过,但错误仍然存在:
- 在this post之后,我添加了
import React from "react";
- 试图通过在
/* tslint:disable */
声明上方添加Body
来禁用tslint - 试图通过在
// tslint:disable-next-line
声明上方添加Body
来禁用tslint - 播放了依赖版本。目前我有
"@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.json
和yarn.lock
-是否列出了多个@types/react
版本?尝试将package.json
更改为与@types/react
列出的依赖项具有相同的react-native
版本。
可能是您使用@types/react
React类型的多个版本,并且组件对于从哪个类型导入感到困惑。
我通过给它any
类型(它不确定是否是真正的解决方法)来修复了:
export const Body: any = withTheme(
我也可以使用WithThemeFnInterface<DefaultTheme>
类型,但我认为它还存在其他错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。