TypeScript 是 JavaScript 的超集,它在 JavaScript 的基础上增加了 静态类型系统面向对象编程现代工具支持,使代码更健壮、可维护。以下是 TypeScript 的核心语法详解:


1. 基础类型

TypeScript 支持 JavaScript 的所有基础类型,并增加了类型注解:

let num: number = 10;       // 数字
let str: string = "hello";  // 字符串
let bool: boolean = true;   // 布尔值
let arr: number[] = [1, 2, 3];  // 数组
let tuple: [string, number] = ["a", 1];  // 元组(固定长度、类型的数组)
let anyVar: any = "anything";  // 任意类型(不推荐)
let unknownVar: unknown = "unknown";  // 未知类型(比 any 更安全)
let voidVar: void = undefined;  // 无返回值(常用于函数)
let nullVar: null = null;       // null
let undefinedVar: undefined = undefined; // undefined
let neverVar: never = (() => { throw new Error(); })();  // 永不返回(如抛出异常)

2. 接口(Interface)

定义对象的结构:

interface Person {
    name: string;
    age?: number;  // 可选属性
    readonly id: number;  // 只读属性
    sayHello(): void;  // 方法
}

const user: Person = {
    name: "Alice",
    id: 1,
    sayHello() { console.log("Hello!"); }
};

3. 类(Class)

支持面向对象编程(OOP):

class Animal {
    private name: string;  // 私有属性
    constructor(name: string) {
        this.name = name;
    }
    public move(distance: number = 0) {
        console.log(`${this.name} moved ${distance}m`);
    }
}

class Dog extends Animal {
    bark() {
        console.log("Woof!");
    }
}

const dog = new Dog("Buddy");
dog.bark();
dog.move(10);

4. 泛型(Generics)

使代码可复用,适用于多种类型:

function identity<T>(arg: T): T {
    return arg;
}
const num = identity<number>(10);  // 返回 number
const str = identity<string>("hello");  // 返回 string

5. 函数

支持类型注解、可选参数、默认参数、剩余参数:

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

const arrowFunc = (a: number, b: number): number => a + b;

function greet(name: string = "Guest", ...hobbies: string[]): void {
    console.log(`Hello, ${name}! Hobbies: ${hobbies.join(", ")}`);
}

6. 类型别名(Type Aliases)

定义复杂类型:

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

type StringOrNumber = string | number;  // 联合类型

7. 枚举(Enum)

定义一组命名常量:

enum Direction {
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT",
}

const dir: Direction = Direction.Up;

8. 类型断言(Type Assertion)

告诉编译器某个值的类型:

const someValue: unknown = "hello";
const strLength = (someValue as string).length;  // 方式1
const strLength2 = (<string>someValue).length;   // 方式2(JSX 不适用)

9. 模块化(Modules)

支持 ES6 模块化:

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

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

10. 高级类型

联合类型(Union Types)

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

交叉类型(Intersection Types)

type A = { a: number };
type B = { b: string };
type C = A & B;  // { a: number, b: string }

类型守卫(Type Guards)

function isString(value: unknown): value is string {
    return typeof value === "string";
}

if (isString(input)) {
    console.log(input.toUpperCase());
}

11. 装饰器(Decorators)

用于类、方法、属性(需开启 experimentalDecorators):

function log(target: any, key: string) {
    console.log(`Method ${key} called`);
}

class Calculator {
    @log
    add(a: number, b: number) {
        return a + b;
    }
}

12. 配置文件(tsconfig.json)

TypeScript 项目配置:

{
    "compilerOptions": {
        "target": "ES6",
        "module": "CommonJS",
        "strict": true,
        "outDir": "./dist"
    },
    "include": ["src/**/*"]
}

总结

特性 描述 示例
静态类型 编译时类型检查 let age: number = 20;
接口 定义对象结构 interface User { name: string; }
支持 OOP(继承、封装、多态) class Animal { ... }
泛型 提高代码复用性 function identity<T>(arg: T): T
模块化 支持 ES6 模块 import { add } from "./math"

TypeScript 的核心优势是 类型安全,适用于大型项目,同时兼容 JavaScript 生态。学习路径:

  1. 掌握基础类型和接口。
  2. 熟悉类和泛型。
  3. 深入高级类型和装饰器。
  4. 结合 React/Vue/Angular 等框架实战。

在这里插入图片描述

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐