# Looking for Maintainers
I created & maintain [typecheck.macro (TCM)](https://github.com/vedantroy/typecheck.macro), a Babel plugin that automatically generates validation functions for Typescript types at compile time. Why? Because Typescript types are erased at compile time, you can't use them to validate data at runtime. For example, you can't verify that the result from an API call matches a given Typescript type.
Because TCM generates validation code directly from Typescript types at compile time it's fast & ergonomic
- Benchmarks show TCM is an order(s) of magnitude faster than almost every other JS data validation library.
- TCM can validate complex Typescript types that other validation libraries can't handle:
- ```
type LinkedList<T> = {next: LinkedList<T> | null, data: T};
type StringLinkedlist = LinkedList<string>;
// typecheck.macro can validate this, including circular references
const isStringLinkedList = createValidator<StringLinkedList>();
```
- If you use TCM, you don't need to rewrite your Typescript types in a DSL. You can just use normal Typescript syntax.
People are using typecheck.macro, including the [Guardian](https://github.com/guardian/support-reminders). But I believe a lot more people could be using this tool. It's fast & easy. There's no reason this tool shouldn't be getting 50K weekly installs.
However, I need help. There are a few features that need adding, but I no longer have the time. Features include:
- Adding transformers so we can transform (instead of just validate) data.
- Support Typescript types that span multiple files
- Add support for new, exciting Typescript features (mapped types like `Record`, conditional types).
- Exploring new architectures for TCM that use an actual Typescript compiler/type-checker instead of my homegrown type resolver.
If you want to be be a contributor to a useful/cool open-source project, post a comment in [this Github issue](https://:example.org).
What's in it for you?
- Mentorship. I'll help you understand the codebase quickly & answer questions so you aren't stumbling around.
- Compiler hacking. TCM is basically a compiler for Typescript types to code. Since it doesn't use the actual Typescript compiler to resolve types, it implements Typescript features like generics/union & intersection types by hand. This results in some [wild code](https://github.com/vedantroy/typecheck.macro/blob/master/src/type-ir/passes/flatten.ts).
- Shaping the Typescript ecosystem.