TypeScript 数据类型详解与示例

作者:函数茶馆时间:2026-10-25 08:09:27浏览:544

本文系统总结 TypeScript 中的各类数据类型,涵盖布尔、数字、字符串、数组、元组、枚举、any、void、never 及对象类型。通过对比 JavaScript 基础,详解各类型的定义语法、使用场景及编译期类型检查机制,帮助开发者规范代码并提升开发效率。

概述

TypeScript 作为 JavaScript 的超集,保留了 JS 原有的所有数据类型,同时在此基础上引入了更具实用性的类型系统,以增强代码的可维护性和安全性。

在开发过程中,开发者可以为变量显式指定类型。TypeScript 会在编译阶段执行严格的类型检查,若赋值类型与声明不符,编译器将报错提示,从而在早期发现潜在错误。

类型分类

TypeScript 主要支持以下数据类型:

  • 1. boolean(布尔类型)
  • 2. number(数值类型)
  • 3. string(字符串类型)
  • 4. array(数组类型)
  • 5. tuple(元组类型)
  • 6. enum(枚举类型)
  • 7. any(任意类型)
  • 8. null 和 undefined 类型
  • 9. void 类型
  • 10. never 类型
  • 11. object(对象类型)

boolean

let flag:boolean = true;
flag = 123;    // 错误
flag = false;  // 正确

number

数值类型与 JavaScript 一致,均为浮点数表示,支持二进制、八进制、十进制及十六进制格式。

let num:number = 123;
num = '456';   // 错误
num = 456;     // 正确

进制表示示例:

let decLiteral:number = 6; // 十进制
let hexLiteral:number = 0xfood; // 十六进制
let binaryLiteral:number = 0b1010; // 二进制
let octalLiteral:number = 0o744; // 八进制

string

字符串类型与 JavaScript 相同,支持使用双引号(")或单引号(')进行定义。

let str:string = 'this is ts';
str = 'test';

作为超集,TypeScript 还支持使用模板字符串,通过 ${} 语法嵌入变量。

let name:string = `Gene`;
let sentence:string = `Hello, my name is ${name}`

array

数组类型与 JavaScript 一致,使用方括号 [] 包裹元素。TypeScript 提供了两种定义方式:

方式一:在元素类型后添加 [],例如 string[]。

let arr:string[] = ['12','23'];
arr = ['45','56'];

方式二:使用数组泛型,格式为 Array<元素类型>。

let arr:Array<number> = [1,2];
arr = ['45','55'];

tuple

元组类型用于表示已知元素数量和类型的数组,各元素的类型可以不同。

let tupleArr:[number,string,boolean];
tupleArr = [12,'34',true]; // yes
tupleArr = [12,'34']; // no

enum

枚举类型是对 JavaScript 标准数据类型的补充,允许为一组数值赋予更易读的命名。

enum Color {Red,Green,Blue}
let c:Color = Color.Green;

any

any 类型允许赋值给任意类型的值。当变量类型在编程阶段尚不确定,且希望跳过编译器的类型检查时,可使用 any 类型。

使用 any 类型的变量不仅可以赋值为任意类型,还可以直接调用其属性和方法。

let num:any = 123;
num = 'str';
num = true;

定义存储多种类型数据的数组时,示例代码如下:

let arrayList:any[] = [1,false,'fine'];
arrayList[1] = 100;

null 和 undefined

在 JavaScript 中,null 表示“空值”,是一个仅包含 null 值的特殊类型,代表空对象引用;undefined 表示变量已声明但未赋值。

默认情况下,null 和 undefined 是所有类型的子类型,这意味着可以将它们赋值给 number 等任何类型的变量。

let num:number | undefined; // 数值类型或者undefined
console.log(num); // 正确
num = 123; 
console.log(num); // 正确

然而,当 TypeScript 配置启用 --strictNullChecks 标记时,null 和 undefined 只能赋值给 void 类型或它们各自所属的类型。

void

void 类型用于标识函数返回值的类型,表示该函数没有返回值。

function hello():void {
    alert('Hello Runoob')
}

never

never 是其他类型(包括 null 和 undefined)的子类型,可以赋值给任何类型,但它代表永远不会出现的值。

没有任何类型是 never 的子类型,这意味着声明为 never 的变量只能被 never 类型的值所赋值。

never 类型通常用于指定那些总会抛出异常或存在无限循环的代码路径。

let a:never;
a = 123; // 错误的写法

a = (() => { // 正确的写法
    throw new Errow('错误')
})()

// 返回的never的函数必须存在无法达到的终点
function error(message:string): never {
    thorw new Error(message);
}

object

对象类型属于非原始类型,常见形式是使用花括号 {} 包裹键值对。

let obj:object;
obj = {name:'Zhang',age:23};

总结

TypeScript 的类型体系与 JavaScript 基本一致,主要分为:

  • 1. 基本类型
  • 2. 引用类型

在基础类型之上,TypeScript 增加了 void、any、enum 等原始类型,以提供更强大的类型支持。

本文介绍了 TypeScript 数据类型的核心内容,更多相关信息可参考本站其他文章或继续浏览后续内容,感谢支持。

作者最新文章
相关文章
更多