TypeScript 基础语法


TypeScript 基础语法

1. 基本类型

TypeScript 支持与 JavaScript 类似的基本类型,包括布尔型、数值型、字符串型、null 和 undefined。另外,TypeScript 还提供了枚举和任意类型。

  1. 布尔型

布尔型变量的值只能为 true 或 false。

let isDone: boolean = false;
  1. 数值型

数值型包括整型和浮点型,TypeScript 支持十进制、二进制和十六进制的数字字面量。

let decimal: number = 6; // 十进制
let hex: number = 0xf00d; // 十六进制
let binary: number = 0b1010; // 二进制
let octal: number = 0o744; // 八进制
  1. 字符串型

字符串型表示文本数据,可以使用单引号或双引号表示。

let name: string = "jack";
let age: string = '18';
  1. null 和 undefined

null 和 undefined 都表示无值,它们有各自的数据类型。在 TypeScript 中,可以使用任何类型的变量赋值为 null 或 undefined。

let u: undefined = undefined;
let n: null = null;
  1. 枚举

枚举类型用于表示一组具有相同类型的常量。TypeScript 提供了两种枚举类型:数字枚举和字符串枚举。

enum Color {
    Red = 1,
    Green,
    Blue
}

let c: Color = Color.Green;
console.log(c); // 2
  1. 任意类型

任意类型(any)表示允许赋值为任意类型。

let obj: any = 123;
obj = 'hello, world';

2. 变量声明

变量声明使用 let 和 const 关键字。

  1. let

let 关键字声明的变量是块级作用域。在块级作用域中声明的变量只能在该块级作用域内部访问。

let x = 10;
if (true) {
    let x = 20;
    console.log(x); // 20
}
console.log(x); // 10
  1. const

const 关键字声明的变量也是块级作用域的,但是它的值不能被重新赋值。

const PI = 3.1415926;
PI = 4; // 报错

3. 函数

TypeScript 支持函数参数的类型和返回值的类型声明。

function add(x: number, y: number): number {
    return x + y;
}

可以使用箭头表示法来定义函数

let myAdd = (x: number, y: number): number => {
    return x + y;
};

4. 接口

接口是 TypeScript 中定义对象、函数、类等结构的方式。接口描述一个对象的类型,定义了对象的属性和方法及其对应的数据类型。

interface Person {
    name: string;
    age: number;
    sayHello(): void;
}

5. 类

TypeScript 可以使用类来实现面向对象编程。类中可以定义属性、方法、构造函数等成员。

class Animal {
    name: string;

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

    sayHello() {
        console.log(`Hello, my name is ${this.name}`);
    }
}

let dog = new Animal('wangwang');
dog.sayHello(); // Hello, my name is wangwang

6. 泛型

TypeScript 支持泛型,可以在定义函数、类和接口的时候使用。

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

let output = identity<string>("hello");
let output2 = identity<number>(123);

7. 类型断言

类型断言可以手动指定变量的类型,当 TypeScript 编译器不能判断具体类型时,可以使用类型断言来告诉编译器具体类型。

let strLength: number = (<string>someValue).length;
或者
let strLength2: number = (someValue as string).length;

总结

TypeScript 具有更强的类型约束和更完善的面向对象编程能力,同时也支持 JavaScript 的大部分语法。掌握 TypeScript 的基础语法,能够提高代码的可靠性和可维护性。