Skip to content

Commit

Permalink
Add support for decorators (facebook#5659)
Browse files Browse the repository at this point in the history
* Turn on decorators

* Add decorator test
  • Loading branch information
Timer authored Nov 1, 2018
1 parent c11cc81 commit 1a8003d
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 0 deletions.
16 changes: 16 additions & 0 deletions packages/babel-preset-react-app/create.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,11 @@ module.exports = function(api, opts, env) {
// in practice some other transforms (such as object-rest-spread)
// don't work without it: https://github.com/babel/babel/issues/7215
require('@babel/plugin-transform-destructuring').default,
// Turn on legacy decorators for TypeScript files
isTypeScriptEnabled && [
require('@babel/plugin-proposal-decorators').default,
false,
],
// class { handleClick = () => { } }
// Enable loose mode to use assignment instead of defineProperty
// See discussion in https://github.com/facebook/create-react-app/issues/4263
Expand Down Expand Up @@ -166,5 +171,16 @@ module.exports = function(api, opts, env) {
// Transform dynamic import to require
require('babel-plugin-dynamic-import-node'),
].filter(Boolean),
overrides: [
isTypeScriptEnabled && {
test: /\.tsx?$/,
plugins: [
[
require('@babel/plugin-proposal-decorators').default,
{ legacy: true },
],
],
},
].filter(Boolean),
};
};
1 change: 1 addition & 0 deletions packages/babel-preset-react-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"dependencies": {
"@babel/core": "7.1.0",
"@babel/plugin-proposal-class-properties": "7.1.0",
"@babel/plugin-proposal-decorators": "7.1.2",
"@babel/plugin-proposal-object-rest-spread": "7.0.0",
"@babel/plugin-syntax-dynamic-import": "7.0.0",
"@babel/plugin-transform-classes": "7.1.0",
Expand Down
5 changes: 5 additions & 0 deletions test/fixtures/typescript/src/App.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@ interface MyType {

type MyObject = Pick<MyType, 'bar' | 'baz'>;

@annotation
class App {
static foo: MyObject = { bar: true, baz: { n: 123 } };
n = App.foo.baz!.n;
}

function annotation(target: any) {
target.annotated = true;
}

export default App;
5 changes: 5 additions & 0 deletions test/fixtures/typescript/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"compilerOptions": {
"experimentalDecorators": true
}
}

0 comments on commit 1a8003d

Please sign in to comment.