https://github.com/ember-cli/babel-remove-types
https://github.com/ember-cli/babel-remove-types
Last synced: 5 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/ember-cli/babel-remove-types
- Owner: ember-cli
- License: mit
- Created: 2024-09-27T15:21:15.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-29T11:59:40.000Z (12 months ago)
- Last Synced: 2025-06-14T04:37:15.664Z (8 months ago)
- Language: TypeScript
- Size: 194 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# `babel-remove-types`
> [!NOTE]
> This is a fork of https://github.com/cafreeman/remove-types. It's not marked as a fork because we want pull requests to target this repo and not "upstream".
A small library for transforming TypeScript code into JavaScript code in the least destructive way possible. This library exports a single function whose purpose is to preserve everything else about the code except for the actual TypeScript syntax itself. As a result, things like decorators and class fields should pass straight through without being transformed in any way.
## Usage
```js
import { removeTypes } from 'babel-remove-types';
const original = `
type AnimalType = 'cat' | 'dog';
// An interface for animals (this comment should be removed when transformed)
interface Animal {
type: AnimalType;
name: string;
age: number;
}
class Cat implements Animal {
type: AnimalType = 'cat';
name: string;
age: number;
constructor(name: string, age: number) {
// This is the name of the animal (this comment should stay)
this.name = name;
this.age = age;
}
}
`;
console.log(await removeTypes(original));
/*
class Cat {
type = 'cat';
constructor(name, age) {
// This is the name of the animal (this comment should stay)
this.name = name;
this.age = age;
}
}
*/
```
## API
### `removeTypes(code, prettierConfig = true): Promise`
- `code`: A string containing TypeScript code
- `prettierConfig`:
- defaults to `true`
- By default, `removeTypes` will run Prettier with a very basic config on the transformed code before returning it. This allows us to clean up some of the "low-hanging" fruit leftover from the Babel transform, e.g. newlines at the beginning or end of the file.
- If you'd prefer to not run Prettier _at all_, passing `false` will bypass the Prettier pass entirely.
- If you'd prefer to use your own Prettier configuration, you can pass an object containing [Prettier configuration options](https://prettier.io/docs/en/options.html) and `removeTypes` will use it instead.
- returns `Promise`: a string containing the transformed JavaScript output.
## Acknowledgements
This library is heavily indebted to [cyco130/detype](https://github.com/cyco130/detype) and began as an extraction and refactor of one of its core functions.