ds300 / react-native-typescript-transformer

Seamlessly use TypeScript with React Native
MIT License
657 stars 50 forks source link

`target` is not used in an inherited TypeScript config. #49

Open ajcrites opened 6 years ago

ajcrites commented 6 years ago

I'm not sure if this is specific to target or other options, but it's easiest to reproduce this way. I'm also not 100% sure that it's this transformer that's not using the target from an extended config, so I apologize if this wastes anyone's time, but I think I've narrowed it down.

For example, you may have a base config that looks like

{
  "compilerOptions": { "target": "es5" }
}

Then your tsconfig.json as { "extends": "./tsconfig.base.json" }.

If you use import { default as X } from 'lib'; ... <X /> then this gets transpiled to <lib_1['default'] /> which is an error.

If you update tsconfig.json to use target directly then it works as expected (<lib_1.default />).

ds300 commented 6 years ago

Ah, yes, we can see that the tsconfig loading strategy is embarrassingly naïve.

I'll switch to TypeStrong/tsconfig asap.

Thanks for the report!

ds300 commented 6 years ago

Hmm, didn't realise that TypeStrong/tsconfig also doesn't support the "extends" option. https://github.com/TypeStrong/tsconfig/issues/21

Will have to do some more digging. Maybe I can use whatever TS itself uses to load config files.

seanadkinson commented 6 years ago

+1 for extends. Thanks for the lib! I'll add a PR if I can get around to it.