wmonk / create-react-app-typescript

DEPRECATED: Create React apps using typescript with no build configuration.
3.7k stars 492 forks source link

Add documentation detailing differences between CRA 2.0 and CRA-TS #438

Open hassankhan opened 5 years ago

hassankhan commented 5 years ago

It would be nice to list the main differences between the two projects, since there is quite a lot of overlapping functionality and can be somewhat confusing to developers who need to make a decision.

Here's what I have so far:

CRA-TS CRA 2.1.1
Namespaces
baseUrl/paths
Casting with <Type>expression
Type-Checking Same process Separate process
Transpilation TypeScript Babel
ghost commented 5 years ago

I believe the correct CRA version is 2.1. Also one more difference to add could be that in CRA 2.1 you can't use <Type>expression to cast, only expression as Type. Which is a super minor thing as you can't use it in TSX anyway so it only applies to TS files which I believe are usually in a minority in React based TS projects.

hassankhan commented 5 years ago

Thanks @tomashubelbauermicrosoft, I've updated the table above. Do you think its worth mentioning the differences from here too?

ghost commented 5 years ago

Decorators won' bet supported until CRA 2.1.1: https://github.com/facebook/create-react-app/issues/5642

EDIT: Now fixed and released as CRA 2.1.1.

doxxx commented 5 years ago

What are the implications of using Babel vs tsc for transpilation?

dkozickis commented 5 years ago

@doxxx Namespaces and casting

danielkcz commented 5 years ago

I think we should include babel-loader for typescript files as well because of the super handy babel-plugin-macros. Or perhaps do it opt-in somehow.

doxxx commented 5 years ago

@dkozickis After doing some reading, it would seem that one of the other implications is that Babel 7 doesn't actually do any type-checking of Typescript code, it just transpiles it down to Javascript. If you want type-checking, you still have to run tsc.

shobhitg commented 5 years ago

Just tried out CRA 2.1.0. Looks like linting is based on eslint. And there is too much mismatch between vscode dev environment and linting errors. There is no eslint config file created to customize anything. And I felt documentation was lacking wrt linting in general.

CRA-TS does it perfectly for me. If the console shows an error, vscode shows it too.

hassankhan commented 5 years ago

@doxxx I thought I'd read that somewhere too, but can't seem to find any links 😕. If you could post one, that would be awesome 👍

doxxx commented 5 years ago

@hassankhan https://blogs.msdn.microsoft.com/typescript/2018/08/27/typescript-and-babel-7/