TypeScript深度剖析: typescript 的数据类型有哪些?

一、是什么

typescriptjavascript几乎一样,拥有相同的数据类型,另外在javascript基础上提供了更加实用的类型供开发使用

在开发阶段,可以为明确的变量定义为某种类型,这样typescript就能在编译阶段进行类型检查,当类型不合符预期结果的时候则会出现错误提示

二、有哪些

typescript 的数据类型主要有如下:

  • boolean(布尔类型)
  • number(数字类型)
  • string(字符串类型)
  • array(数组类型)
  • tuple(元组类型)
  • enum(枚举类型)
  • any(任意类型)
  • null 和 undefined 类型
  • void 类型
  • never 类型
  • object 对象类型

boolean

布尔类型

ini 复制代码
let flag:boolean = true;
// flag = 123; // 错误
flag = false;  //正确

number

数字类型,和javascript一样,typescript的数值类型都是浮点数,可支持二进制、八进制、十进制和十六进制

ini 复制代码
let num:number = 123;
// num = '456'; // 错误
num = 456;  //正确

进制表示:

ini 复制代码
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制

string

字符串类型,和JavaScript一样,可以使用双引号(")或单引号(')表示字符串

ini 复制代码
let str:string = 'this is ts';
str = 'test';

作为超集,当然也可以使用模版字符串``进行包裹,通过 ${} 嵌入变量

ini 复制代码
let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }

array

数组类型,跟javascript一致,通过[]进行包裹,有两种写法:

方式一:元素类型后面接上 []

ini 复制代码
 let arr:string[] = ['12', '23'];
 arr = ['45', '56'];

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

ini 复制代码
let arr:Array<number> = [1, 2];
arr = ['45', '56'];

tuple

元祖类型,允许表示一个已知元素数量和类型的数组,各元素的类型不必相同

ini 复制代码
let tupleArr:[number, string, boolean];
tupleArr = [12, '34', true]; //ok
typleArr = [12, '34'] // no ok

赋值的类型、位置、个数需要和定义(生明)的类型、位置、个数一致

enum

enum类型是对JavaScript标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字

ini 复制代码
enum Color {Red, Green, Blue}
let c: Color = Color.Green;

any

可以指定任何类型的值,在编程阶段还不清楚类型的变量指定一个类型,不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查,这时候可以使用any类型

使用any类型允许被赋值为任意类型,甚至可以调用其属性、方法

ini 复制代码
let num:any = 123;
num = 'str';
num = true;

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

ini 复制代码
let arrayList: any[] = [1, false, 'fine'];
arrayList[1] = 100;

null 和 和 undefined

JavaScriptnull 表示 "什么都没有",是一个只有一个值的特殊类型,表示一个空对象引用,而undefined表示一个没有设置值的变量

默认情况下nullundefined是所有类型的子类型, 就是说你可以把 null undefined 赋值给 number 类型的变量

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

但是ts配置了--strictNullChecks标记,nullundefined只能赋值给void和它们各自

void

用于标识方法返回值的类型,表示该方法没有返回值。

csharp 复制代码
function hello(): void {
    alert("Hello Runoob");
}

never

never是其他类型 (包括nullundefined)的子类型,可以赋值给任何类型,代表从不会出现的值

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

never 类型一般用来指定那些总是会抛出异常、无限循环

typescript 复制代码
let a:never;
a = 123; // 错误的写法

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

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

object

对象类型,非原始类型,常见的形式通过{}进行包裹

ini 复制代码
let obj:object;
obj = {name: 'Wang', age: 25};

三、总结

javascript基本一致,也分成:

  • 基本类型
  • 引用类型

在基础类型上,typescript增添了voidanyemum等原始类型

系列文章

TypeScript深度剖析:TypeScript 中类的理解?应用场景?

TypeScript深度剖析:Vue项目中应用TypeScript?

TypeScript 深度剖析:TypeScript 的理解?与 JavaScript 的区别?

TypeScript深度剖析:React 项目中应用 TypeScript?

TypeScript深度剖析:TypeScript 中命名空间与模块的理解?区别?

TypeScript深度剖析:TypeScript 中接口的理解?应用场景?

TypeScript深度剖析:TypeScript 中高级类型的理解?有哪些?

TypeScript深度剖析:TypeScript 中泛型的理解?应用场景?

TypeScript深度剖析: TypeScript 中函数的理解?与 JavaScript 函数的区别?

TypeScript深度剖析: TypeScript 中枚举类型的理解?应用场景?

TypeScript深度剖析:装饰器的理解?应用场景?

TypeScript深度剖析: typescript 的数据类型有哪些?

相关推荐
时光少年15 分钟前
Android 视频分屏性能优化——GLContext共享
前端
IT_陈寒32 分钟前
JavaScript开发者必知的5个性能杀手,你踩了几个坑?
前端·人工智能·后端
跟着珅聪学java36 分钟前
Electron 精美菜单设计
运维·前端·数据库
日光倾36 分钟前
【Vue.js 入门笔记】闭包和对象引用
前端·vue.js·笔记
一只程序熊43 分钟前
UniappX 未找到 “video“ 组件,已自动当做 “view“ 组件处理。请确保代码正确,或重新生成自定义基座后再试。
前端
林小帅44 分钟前
【笔记】xxx 技术分享文档模板
前端
雾岛心情1 小时前
【HTML&CSS】HTML为文字添加格式和内容
前端·css·html
心.c1 小时前
如何在项目中减少 XSS 攻击
前端·xss
Rsun045511 小时前
Vue相关面试题
前端·javascript·vue.js
TON_G-T1 小时前
前端包管理器(npm、yarn、pnpm)
前端