欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > js数据类型与ts数据类型

js数据类型与ts数据类型

2025/2/13 5:53:21 来源:https://blog.csdn.net/weixin_36445197/article/details/145592104  浏览:    关键词:js数据类型与ts数据类型

JavaScript 和 TypeScript 的数据类型有些相似,但 TypeScript 在 JavaScript 的基础上添加了静态类型检查和更多的类型系统特性。下面是两者的对比:

1. JavaScript 数据类型

JavaScript 有 7 种基本数据类型:

  • 原始类型(Primitive types):

    • Number: 数字类型(包括整数和浮点数)。
    • String: 字符串类型。
    • Boolean: 布尔值(truefalse)。
    • Null: 表示“无”或“空”值。
    • Undefined: 未定义,通常是没有赋值的变量。
    • Symbol: 新增于 ES6,表示唯一的值,用于对象属性的唯一标识。
    • BigInt: 用于表示任意精度的整数(ES11 引入)。
  • 引用类型(Reference types):

    • Object: 对象类型,包括数组、函数、普通对象等。
    • Array: 数组类型(数组也是对象的一种形式)。
    • Function: 函数类型。

2. TypeScript 数据类型

TypeScript 继承了 JavaScript 的数据类型,同时增加了静态类型检查和更多的类型系统功能。TypeScript 的类型分为两大类:基本类型高级类型
在这里插入图片描述

基本数据类型:
  • number: 表示数值类型(包括整数、浮点数、BigInt 的类型)。
  • string: 表示字符串类型。
  • boolean: 布尔值类型。
  • null: 表示“无”或“空”值。
  • undefined: 表示未定义的变量类型。
  • symbol: 符号类型,用于创建唯一的标识符。
  • bigint: 用于表示大整数类型。

这些基本类型与 JavaScript 中的原始类型基本一致。

高级类型:
  • 数组类型:使用 type[]Array<type> 来定义数组类型。

    let numbers: number[] = [1, 2, 3]; // 或者 let numbers: Array<number> = [1, 2, 3];
    
  • 元组类型:允许数组中的元素类型不同。

    let tuple: [string, number] = ['hello', 42];
    
  • 枚举类型enum 用于定义一组命名的常量。

    enum Color {Red,Green,Blue
    }
    let c: Color = Color.Green;
    
  • Any 类型:可以赋值为任意类型,不进行类型检查。用于处理动态内容,但不推荐滥用。

    let anything: any = 42;
    anything = 'Hello';
    anything = true;
    
  • Void 类型:表示没有返回值的函数的返回类型。

    function log(message: string): void {console.log(message);
    }
    
  • Never 类型:表示永远不会发生的类型,常用于函数抛出异常或陷入无限循环的情况。

    function throwError(message: string): never {throw new Error(message);
    }
    
  • Object 类型:表示所有非原始类型。

    let obj: object = { name: "Alice" };
    
  • Union 类型:允许一个变量是几种类型中的一种。

    let value: string | number = 42;
    value = 'Hello';
    
  • Intersection 类型:组合多个类型,表示同时符合多个类型的要求。

    interface Person {name: string;
    }interface Employee {id: number;
    }type EmployeePerson = Person & Employee;
    
  • Literal 类型:表示特定的值。

    let direction: 'up' | 'down' = 'up';
    
  • Type Alias:为类型创建别名。

    type StringOrNumber = string | number;
    let value: StringOrNumber = 'Hello';
    value = 42;
    
  • Interface:用于定义对象的形状,可以扩展其他接口,支持继承。

    interface Person {name: string;age: number;
    }
    
特殊数据类型:
  • Unknown 类型:类似于 any,但在赋值给其他变量之前,必须进行类型检查。
    let unknownValue: unknown = 42;
    if (typeof unknownValue === 'number') {let num: number = unknownValue; // 现在可以安全使用
    }
    

总结:

  • JavaScript 数据类型是动态的,通常没有强制的类型检查。
  • TypeScript 扩展了 JavaScript 的类型系统,允许开发者在编译时发现类型错误,并且支持类型推断、静态类型检查以及更复杂的类型特性(如泛型、接口、联合类型等)。

TypeScript 提供了更加严格的类型系统,可以帮助你在编写代码时避免类型错误,提高代码的可维护性和可读性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com