【Typescript】 数据类型

TypeScript 提供了多种数据类型,主要可分为基本数据类型、复合数据类型和特殊类型。以下是这些数据类型的详细介绍:

1. 基本数据类型

  • number: 表示数字,包括整数和浮点数。

    let age: number = 30;
    
  • string: 表示字符串。

    let name: string = "Alice";
    
  • boolean: 表示布尔值(truefalse)。

    let isStudent: boolean = true;
    
  • void: 表示没有返回值的函数类型,通常用于函数。

    function logMessage(): void {
        console.log("No return value");
    }
    
  • null: 表示空值。

    let n: null = null;
    
  • undefined: 表示未定义的值。

    let u: undefined = undefined;
    
  • any: 表示任意类型,允许关闭类型检查。

    let anything: any = 42;
    anything = "Now I'm a string.";
    

2. 复合数据类型

  • 数组: 使用类型后加 [] 来声明数组类型。

    let numbers: number[] = [1, 2, 3];
    let names: Array<string> = ["Alice", "Bob"];
    
  • 元组: 一种特殊类型的数组,允许不同类型的元素,长度固定。

    let tuple: [string, number] = ["Alice", 30];
    
  • 对象: 表示键值对的集合,键是字符串,值可以是任何类型。

    let person: { name: string; age: number } = {
        name: "Alice",
        age: 30,
    };
    
  • 枚举:枚举成员可以是数字或字符串。使用枚举可以提高代码的可读性和可维护性

    enum Direction {
        Up,    // 0
        Down,  // 1
        Left,  // 2
        Right  // 3
    }
    
    let dir: Direction = Direction.Up;
    console.log(dir); // 输出: 0
    

3. 特殊类型

  • 联合类型: 允许一个变量可以是多种类型之一,通过 | 符号定义。

    let value: number | string;
    value = 42;      // 允许
    value = "Hello"; // 允许
    
  • 交叉类型: 将多个类型合并为一个类型。

    interface Person {
        name: string;
    }
    
    interface Contact {
        email: string;
    }
    
    type UserContact = Person & Contact;
    
    const user: UserContact = {
        name: "Alice",
        email: "alice@example.com",
    };
    
  • 只读属性: 使用 readonly 修饰符来定义只读属性。

    interface Point {
        readonly x: number;
        readonly y: number;
    }
    
    const point: Point = { x: 10, y: 20 };
    // point.x = 5; // 错误:无法修改只读属性
    

4. 特殊用法

  • never: 表示永远不会有值的类型,通常用于抛出错误或无限循环的函数。

    function throwError(): never {
        throw new Error("This is an error!");
    }
    
  • unknown: 表示未知类型,类型安全比 any 更严格。

    let value: unknown;
    value = 42;        // 允许
    value = "Hello";   // 允许
    
    if (typeof value === "string") {
        console.log(value); // 需要类型检查才能使用
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值