Kar*_*tik 5 typescript tslint react-native styled-components prettier
我在反应本机项目中有这个文件:
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')};
`);
Run Code Online (Sandbox Code Playgroud)
withTheme
我将 React Native 从 0.61.5 升级到 0.63.2,并开始在使用的任何地方出现此 lint 错误:
TS2742:如果不引用“react-native/node_modules/@types/react”,就无法命名“Body”的推断类型。这可能不可移植。类型注释是必要的。
我尝试了几种方法,但错误仍然存在:
import React from "react";
/* tslint:disable */
上方添加来禁用 tslintBody
// tslint:disable-next-line
上方添加来禁用 tslintBody
"@types/react": "^16.9.49"
.或者,检查您的package-lock.json
——那里列出了yarn.lock
多个@types/react
版本吗?尝试将您的版本更改为与列出的依赖项package.json
相同的版本。@types/react
react-native
可能您有多个版本的@types/react
React 类型,并且组件对于从哪个版本导入感到困惑。
通过“引用”,TypeScript 意味着您正在处理的特定项目在其package.json
. 您可能依赖相邻的包来声明依赖关系,或者恰巧在您的计算机上全局安装了该包。
要解决此问题,请将@types/react
其添加devDependency
到您的包管理器中package.json
并使用您选择的包管理器进行安装。这将满足 TypeScript,因为它将保证您的包肯定具有对其所需的 (React) 类型的引用——而不仅仅是巧合。
npm i @types/react --save-dev
yarn add @types/react -D
Run Code Online (Sandbox Code Playgroud)
我们还应该注意“tslint”并tslint:disable
指TSLint,这是一个现已弃用的工具,与 TypeScript不同。TSLint 是一个单独的库,它向 TypeScript 代码添加额外的静态分析(“linting”)。换句话说,TSLint 之于 TypeScript 就像 ESLint 之于 JavaScript。
您看到的错误是 TypeScript 错误,而不是 TSLint 错误。
归档时间: |
|
查看次数: |
10254 次 |
最近记录: |