create-react-app 问题:我们是否应该在每个React项目中使用allowSyntheticDefaultImports:true或skipLibCheck:true?

vfwfrxfs  于 2个月前  发布在  React
关注(0)|答案(6)|浏览(31)

在社区中有两种编写方式:
在TypeScript文档中写:

import * as React from "react";

在CRA中写:
create-react-app/packages/cra-template-typescript/template/src/index.tsx
第1行:
| | importReactfrom'react'; |
对于库的用户,这两种用法都是允许的。因为CRA已经启用了 allowSyntheticDefaultImportsskipLibCheck
create-react-app/packages/react-scripts/scripts/utils/verifyTypeScriptSetup.js
第104至106行:
| | skipLibCheck: {suggested: true}, |
| | esModuleInterop: {suggested: true}, |
| | allowSyntheticDefaultImports: {suggested: true}, |
但是对于库的用户来说,问题出现了:
如果我使用 import React from 'react'; 编写一个库。
那么下游用户必须启用 allowSyntheticDefaultImportsskipLibCheck ,否则他们将无法在Typescript中使用这个库。
对于自己配置webpack和tsconfig的用户来说,通常会关闭 allowSyntheticDefaultImportsskipLibCheck(默认行为)。
问题:以下两种方法哪种更推荐?

  • 强制每个项目跳过skipLibCheck。
  • 强制每个项目启用enableSyntheticDefaultImports。
  • 我们应该建议库的作者使用 import * as React from 'react'; ,但不限制库用户使用 import * as React from 'react';import React from 'react';

无论我们选择哪种方法,我们都应该在react / create-react-app / TypeScript文档网站中指定这种行为,并为react库的作者和用户提供一些更详细的建议。
相关问题:

@ianschmitz@gaearon@RyanCavanaugh@DanielRosenwasser@orta

hm2xizp9

hm2xizp91#

这个问题已经被自动标记为过时,因为它没有任何最近的活动。如果没有发生任何进一步的活动,它将在5天后被关闭。

4ngedf3f

4ngedf3f2#

一旦确定了ReactRFC,我们就可以在这里提供建议。

syqv5f0l

syqv5f0l3#

FWIW,我们建议将skipLibCheck设置为true,因为3.9版本。
关于:allowSyntheticDefaultImports,我个人的偏好是将其关闭,但这取决于RFC的整体结果(以及文化整体向* as x的转变)。

ih99xse1

ih99xse14#

@orta why we should enable skipLibCheck since 3.9?

kxeu7u2r

kxeu7u2r5#

在我的经验中,使用skipLibCheck进行类型检查的速度要快得多。

iyr7buue

iyr7buue6#

这将更快,我还会设置 skipLibCheck:true 进行开发。但这会隐藏库错误,所以在生产模式下编译时,我通常会设置 skipLibCheck: false

相关问题