Open xiaoxiangmoe opened 4 years ago
This issue has been automatically marked as stale because it has not had any recent activity. It will be closed in 5 days if no further activity occurs.
Once the react RFC is figured out we can provide recommendations here I think.
FWIW, we recommend skipLibCheck
as true since 3.9
WRT: allowSyntheticDefaultImports
my personal preference is to have it off, but that depends on the RFC results in general (and probably a shift in culture overall to * as x
)
@orta why we should enable skipLibCheck since 3.9?
In my experience type checking is significantly faster with skipLibCheck
on.
This will be much faster, and I will also set skipLibCheck:true
in development.
But this will hide the library errors, so I usually set skipLibCheck: false
when compiling in production mode.
There are currently two ways of writing in the community:
In TypeScript Documentation it write:
and in CRA:
https://github.com/facebook/create-react-app/blob/9123aae7a3beaba8b245f73eb0180baa7b2f8411/packages/cra-template-typescript/template/src/index.tsx#L1
For users of a library, both usages are allowed. Because CRA has enabled
allowSyntheticDefaultImports
andskipLibCheck
.https://github.com/facebook/create-react-app/blob/30fc0bf5ed566d9b42194d56541d278013d7928c/packages/react-scripts/scripts/utils/verifyTypeScriptSetup.js#L104-L106
But for users of the library, the problem arises:
If I write a library using
import React from 'react';
.Then downstream users must enable
allowSyntheticDefaultImports
orskipLibCheck
, otherwise they will not be able to use this library in Typescript.For users who configure webpack and tsconfig themselves, it is common to turn off
allowSyntheticDefaultImports
andskipLibCheck
(default behavior).Question: Which of the following two methods is more recommended?
import * as React from 'react';
, but not restrict library users to useimport * as React from 'react';
orimport React from 'react';
Whichever method we choose, we should specify this behavior in the react / create-react-app / TypeScript documentation website, and we should have some more detailed suggestions for the react library authors and react library users.
related issues:
@ianschmitz @gaearon @RyanCavanaugh @DanielRosenwasser @orta