There are currently two ways of writing in the community:
In TypeScript Documentation it write:
import * as React from "react";
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 and skipLibCheck.
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 usingimport React from 'react';.
Then downstream users must enable allowSyntheticDefaultImports or skipLibCheck, 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 and skipLibCheck(default behavior).
Question: Which of the following two methods is more recommended?
- Force each project to force skipLibCheck.
- Force each project to force enableSyntheticDefaultImports.
- We should recommend the author of the library to use
import * as React from 'react';, but not restrict library users to use import * as React from 'react'; or import 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
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
allowSyntheticDefaultImportsandskipLibCheck.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
allowSyntheticDefaultImportsorskipLibCheck, 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
allowSyntheticDefaultImportsandskipLibCheck(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