TypeScript
Oxc transformer supports transforming TypeScript to JavaScript.
js
import { transform } from "oxc-transform";
const result = await transform("lib.ts", sourceCode, {
typescript: {
jsxPragma: "React.createElement",
jsxPragmaFrag: "React.Fragment",
onlyRemoveTypeImports: false,
allowNamespaces: true,
removeClassFieldsWithoutInitializer: false,
rewriteImportExtensions: false,
optimizeConstEnums: false,
optimizeEnums: false,
},
});
`````````js
import { transform } from "oxc-transform";
const result = await transform("lib.ts", sourceCode, {
typescript: {
removeClassFieldsWithoutInitializer: true,
},
assumptions: {
setPublicClassFields: true,
},
});
`````````ts [input.ts]
import { Something1 } from "./somewhere";
type Something2 = Exclude<string | number, string>;
export class Foo {
@test
foo(input1: Something1, input2: Something2) {}
}
`````````js [output(typescript_compiler).js]
// omit helper functions
var _a;
import { Something1 } from "./somewhere";
export class Foo {
foo(input1, input2) {}
}
__decorate(
[
test,
__metadata("design:type", Function),
__metadata("design:paramtypes", [
typeof (_a = typeof Something1 !== "undefined" && Something1) === "function" ? _a : Object,
Number, // [!code highlight]
]),
__metadata("design:returntype", void 0),
],
Foo.prototype,
"foo",
null,
);
`````````js [output.js]
// omit helper functions
import { Something1 } from "./somewhere";
var _ref;
export class Foo {
foo(input1, input2) {}
}
_decorate(
[
test,
Reflect.metadata("design:paramtypes", [Something1, Number]),
_decorateMetadata("design:type", Function),
_decorateMetadata("design:paramtypes", [
typeof (_ref = typeof Something1 !== "undefined" && Something1) === "function"
? _ref
: Object,
Object,
]),
_decorateMetadata("design:returntype", void 0),
],
Foo.prototype,
"foo",
null,
);
`````````js
import { transform } from "oxc-transform";
const result = await transform("lib.ts", sourceCode, {
typescript: {
optimizeConstEnums: true,
optimizeEnums: true,
},
});
`````````ts
namespace Foo {
export let bar = 1;
}
console.log(Foo.bar);
`````````ts [input.ts]
namespace Foo {
export const bar = 1;
}
namespace Foo {
export const baz = bar;
}
`````````js [output(typescript_compiler).js]
var Foo;
(function (Foo) {
Foo.bar = 1;
})(Foo || (Foo = {}));
(function (Foo) {
Foo.baz = Foo.bar;
})(Foo || (Foo = {}));