>_fieldnotes.
GUÍA DE BOLSILLO/TYPESCRIPT ↔ JAVA
Ctrl K
FIELDNOTES/BACKEND/SINTAXIS

PRÁCTICA · REPASO PARA LEER Y ESCRIBIR CÓDIGO

TypeScript ↔ Java

Una comparativa visual de las formas que más vas a reconocer en el código. Cambia el target desde arriba o desde el selector de esta página.

funcionesmodeloscoleccionesSpring MVC

Elige el target de Java en la barra superior. Los bloques se actualizarán juntos. Java 8/11 va primero porque es sintaxis compatible con proyectos antiguos.

Pistas de versión: `record` desde Java 16, `var` local desde Java 10, `List.of` desde Java 9 y `Stream.toList()` desde Java 16. El target del proyecto puede impedir usarlos aunque tengas un JDK más nuevo.

01

Método y tipos

Java declara el tipo de retorno y los tipos de los parámetros.

TYPESCRIPT
const isAdult = (age: number): boolean => age >= 18;
JAVA
JAVA 8 / 11
public boolean isAdult(int age) {
    return age >= 18;
}
02

Modelo de datos

Una interface TS describe una forma de objeto; record ofrece una forma corta e inmutable desde Java 16.

TYPESCRIPT
interface User {
  id: number;
  name: string;
  active: boolean;
}
JAVA
JAVA 8 / 11
public class User {
    private final Long id;
    private final String name;
    private final boolean active;

    public User(Long id, String name, boolean active) {
        this.id = id;
        this.name = name;
        this.active = active;
    }

    public Long getId() { return id; }
    public String getName() { return name; }
    public boolean isActive() { return active; }
}
03

Filtrar y transformar una lista

Los streams encadenan operaciones; Java 8 usa Collectors.toList().

TYPESCRIPT
const names = users
  .filter(user => user.active)
  .map(user => user.name);
JAVA
JAVA 8 / 11
List<String> names = users.stream()
    .filter(User::isActive)
    .map(User::getName)
    .collect(Collectors.toList());
04

Null y valor alternativo

Optional existe desde Java 8. Sigue el uso que ya tenga el proyecto.

TYPESCRIPT
const displayName = user?.name ?? 'Unknown';
JAVA
JAVA 8 / 11
String displayName = Optional.ofNullable(user)
    .map(User::getName)
    .orElse("Unknown");
05

Endpoint HTTP

Spring MVC suele escribir el flujo como una llamada síncrona.

TYPESCRIPT
router.get('/users/:id', async (req, res) => {
  const user = await service.find(req.params.id);
  res.json(user);
});
JAVA
JAVA 8 / 11
@GetMapping("/users/{id}")
public UserDto getUser(@PathVariable Long id) {
    return userService.findById(id);
}
06

Manejo de errores

No captures una excepción para ocultarla; tradúcela o recupérala.

TYPESCRIPT
try {
  await saveUser(user);
} catch (error) {
  console.error(error);
}
JAVA
JAVA 8 / 11
try {
    userService.save(user);
} catch (RuntimeException ex) {
    log.error("Could not save user", ex);
    throw ex;
}