The source code for this blog is available on GitHub.

Blog.

Hướng Dẫn Học TypeScript Cho Lập Trình Viên Java

Cover Image for Hướng Dẫn Học TypeScript Cho Lập Trình Viên Java
Hung Tran
Hung Tran

Hướng Dẫn Học TypeScript Dành Cho Người Biết Java

Khi bạn đã có kiến thức về Java và muốn tiếp cận TypeScript, một ngôn ngữ lập trình hiện đại được xây dựng dựa trên JavaScript, dưới đây là cách tiếp cận hiệu quả để học và làm quen với TypeScript, tận dụng nền tảng Java của bạn:

1. Hiểu TypeScript và điểm tương đồng với Java

TypeScript là gì?

  • TypeScript là một siêu tập (superset) của JavaScript, bổ sung hệ thống kiểu tĩnh (static typing) và các tính năng hướng đối tượng mạnh mẽ.
  • TypeScript được biên dịch thành JavaScript để chạy trên trình duyệt hoặc Node.js.

Tương đồng với Java:

  • Hệ thống kiểu tĩnh: TypeScript sử dụng kiểu dữ liệu rõ ràng (string, number, boolean...), tương tự như Java.
  • Hướng đối tượng: TypeScript hỗ trợ class, interface, kế thừa, access modifiers (public, private, protected).
  • Cú pháp quen thuộc: Gần với Java hơn so với JavaScript thuần.

Khác biệt chính:

  • TypeScript linh hoạt hơn nhờ dynamic typing.
  • TypeScript cần biên dịch trước khi chạy.
  • Java thiên về backend, TypeScript thường dùng cho frontend (React/Angular) hoặc backend với Node.js.

2. Cách tiếp cận học TypeScript từ nền tảng Java

Bước 1: Làm quen với JavaScript cơ bản

  • Hiểu cú pháp cơ bản: let, const, hàm, mảng, object.
  • Arrow functions: () => {}.
  • Bất đồng bộ: Promise, async/await.
  • Tài liệu tham khảo: MDN Web Docs.

Mẹo: Bạn có thể bỏ qua phần như vòng lặp, điều kiện, vì đã quen với Java.

Bước 2: Cài đặt môi trường TypeScript

  • Cài Node.js: Tải từ nodejs.org.
  • Cài TypeScript:
npm install -g typescript
  • Biên dịch file TypeScript:
tsc example.ts
node example.js

Bước 3: Học cú pháp TypeScript qua khái niệm Java

Type Annotations

let name: string = "John";
let age: number = 30;

function add(a: number, b: number): number {
  return a + b;
}

Interface và Type

interface Person {
  name: string;
  age: number;
}

let user: Person = { name: "John", age: 30 };

type Point = { x: number; y: number };

Class và Kế thừa

class Animal {
  private name: string;

  constructor(name: string) {
    this.name = name;
  }

  public getName(): string {
    return this.name;
  }
}

class Dog extends Animal {
  bark() {
    return "Woof!";
  }
}

Generics

function identity<T>(value: T): T {
  return value;
}

let result = identity("Hello");

Union Types & Type Narrowing

let value: string | number;
value = "Hello";
value = 123;

function printValue(value: string | number) {
  if (typeof value === "string") {
    console.log(value.toUpperCase());
  } else {
    console.log(value.toFixed(2));
  }
}

Bước 4: Thực hành dự án thực tế

  • Frontend: React hoặc Angular + TypeScript.
  • Backend: Node.js với Express + TypeScript.

React Example

interface Props {
  title: string;
}

const MyComponent: React.FC<Props> = ({ title }) => {
  return <h1>{title}</h1>;
};

Express Example

import express from "express";

const app = express();

app.get("/", (req: express.Request, res: express.Response) => {
  res.json({ message: "Hello, TypeScript!" });
});

app.listen(3000, () => console.log("Server running"));
  • Công cụ hỗ trợ:
    • Visual Studio Code
    • tsconfig.json để cấu hình build

Bước 5: Tính năng nâng cao

Modules

// math.ts
export function add(a: number, b: number): number {
  return a + b;
}

// main.ts
import { add } from "./math";
console.log(add(2, 3));

Type Inference & Literal Types

let x = 10; // TypeScript suy ra x: number

type Status = "success" | "error";
let result: Status = "success";

3. Tài liệu và nguồn học

4. Lời khuyên

  • Tận dụng kiến thức Java: OOP, kiểu tĩnh, generics sẽ giúp học nhanh.
  • Viết code mỗi ngày để làm quen TypeScript.
  • JavaScript có thể gây bối rối (undefined, prototype...), nhưng rất quan trọng để hiểu TypeScript.
  • So sánh cú pháp:

Java

public String greet(String name) {
    return "Hello " + name;
}

TypeScript

function greet(name: string): string {
  return `Hello ${name}`;
}

5. Ví dụ minh họa: So sánh class

Java

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getDetails() {
        return "Name: " + name + ", Age: " + age;
    }
}

TypeScript

class Person {
  constructor(private name: string, private age: number) {}

  getDetails(): string {
    return `Name: ${this.name}, Age: ${this.age}`;
  }
}

const person = new Person("John", 30);
console.log(person.getDetails()); // Output: Name: John, Age: 30

6. Kết luận

Với nền tảng Java, bạn đã có lợi thế lớn khi học TypeScript nhờ sự tương đồng trong cú pháp và tư duy hướng đối tượng. Hãy bắt đầu bằng cách làm quen với JavaScript cơ bản, học cú pháp TypeScript qua các khái niệm quen thuộc, và thực hành với các dự án thực tế. Trong vòng 1–2 tháng, bạn có thể sử dụng TypeScript thành thạo trong các ứng dụng web hoặc backend.