【鸿蒙App】TypeScript的核心语法详解
·
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 生态。学习路径:
- 掌握基础类型和接口。
- 熟悉类和泛型。
- 深入高级类型和装饰器。
- 结合 React/Vue/Angular 等框架实战。

更多推荐


所有评论(0)