A TypeScript preprocessor/transpiler that enforces Java-like OOP principles in TypeScript.
IMPORTANT: JavaTS is currently in experimental status and under active development. API changes may occur frequently, and not all features are fully implemented. Use in production environments is not recommended at this stage.
JavaTS creates a strict subset of TypeScript that enforces object-oriented programming principles similar to Java. The goal is to provide a familiar environment for Java developers transitioning to TypeScript, or for teams that want to enforce strict OOP principles in their TypeScript codebase.
- ❌ Forbids procedural code (everything must be in a class)
- ✅ Forces class-based architecture with proper
main()
methods - ✅ Enforces visibility modifiers (
public
,private
,protected
) - ✅ Requires explicit typing for all declarations
- ✅ Supports Java-like OOP features:
extends
,implements
,abstract
,interface
- ✅ Transpiles to standard TypeScript or directly to JavaScript
npm install javats --save-dev
Or globally:
npm install -g javats
javats init my-project
cd my-project
npm install
// src/Main.javats
public class Main {
private static count: number = 0;
public static main(args: string[]): void {
console.log("Hello from JavaTS!");
Main.incrementCount();
console.log(`Count is now: ${Main.count}`);
}
private static incrementCount(): void {
this.count++;
}
}
javats check src/**/*.javats
javats build src/**/*.javats -o dist
node dist/Main.js
JavaTS provides the following commands:
Validates JavaTS files against all rules:
javats check [files..]
Options:
--fix
: Automatically fix issues where possible (experimental)
Transpiles JavaTS files to TypeScript or JavaScript:
javats build [files..] --out-dir <output-directory>
Options:
--out-dir <dir>
: Output directory (required)--emit-js
: Also generate JavaScript files
Creates a new JavaTS project:
javats init [project-name]
Options:
--name <name>
: Project name
You can also use JavaTS programmatically:
import { JavatsParser, Validator, JavatsTransformer, Rules } from 'javats';
// Parse a file
const parser = new JavatsParser();
const sourceFile = parser.parseFile('path/to/file.javats');
// Validate the file
const validator = new Validator();
validator.addRules(Rules.createDefaultRules());
const errors = validator.validate(sourceFile);
// Transform to TypeScript
const transformer = new JavatsTransformer();
const tsCode = transformer.transform(sourceFile);
JavaTS can be configured with a javats.config.json
file in your project root:
{
"rules": {
"requireMain": true,
"noProceduralCode": true,
"requireModifiers": true,
"explicitTyping": true
},
"compilerOptions": {
"target": "ES2020",
"module": "NodeNext"
}
}
- Core rules implementation
- Basic CLI
- TypeScript transpilation
- VSCode extension for real-time validation
- Advanced configuration options
- Integration with popular build tools
- Online playground
Contributions are welcome!
MIT
Note: This project is not affiliated with Oracle's Java or Microsoft's TypeScript.