[ TypeScript连载-第三期 ] 数据类型概述

175 阅读3分钟

海阔凭鱼跃,天高任鸟飞。Hey 你好!我是秦爱德。😄

话不多说,正文开始...

JavaScript的数据类型

JavaScript的数据类型可分为** 原始数据类型 ** 和 ** 对象数据类型 **

原始数据类型:Boolean,Number,String,Null,Undefined,BigInt,symbol

对象数据类型:Object

TypeScript的数据类型

TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了其他数据类型给我们使用,其中包括(元组 Tuple,枚举,Any,Void,Never)

关于JavaScript的数据类型这里不做过多解释,详情请看这篇文章,写的非常好👍【JS 进阶】你真的掌握变量和类型了吗

在ts中,我们使用 “ : 数据类型” 来声明一个变量并表示该变量类型。

基础类型声明

let molly: boolean = false;
let molly: number = 1;
let molly: string = '秦爱德';
let molly: undefined = undefined;
let molly: null = null;

对象类型声明

let molly: object = {name:'molly'};
// 接口方式声明
interface Person {name: string};
let molly: Person = {name:'molly'};

数组类型声明

//「类型 + 方括号」表示法
let list: number[] = [1, 2, 3];

// 第二种方式是使用数组泛型,Array<元素类型>
let list: Array<number> = [1, 2, 3];

元组 Tuple类型声明

// 定义:元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。简而言之就是元组允许数组里面包含不同类型的数据元素。
let tom: [string, number] = ['Tom', 25];

枚举类型声明

// 定义:每个枚举成员都有一个 name 和一个 value,枚举值到枚举名之间相互映射。通常用于表示含有限范围的值,适用于一些多条件判断逻辑场景。

enum Enum {A, B}

// 默认情况下,枚举成员会被赋值为从 0 开始递增的数字。 也可以手动的指定成员的数值。

enum Enum {A=1, B}
console.log(Enum["A"] === 1); // true
console.log(Days[2] === "B"); // true

Any类型声明

// 定义:任意值(Any)用来表示允许赋值为任意类型。
// 在某些特定场景下我们还不清楚类型的变量指定的类型。 这些值可能来自于动态的内容,这个时候我们便可以使用Any类型来表示这些变量。
let molly: any = 'hello';

Void类型声明

// 定义:空值(Void)用来表示没有任何类型,可以用 void 表示没有任何返回值的函数。
function test(): void {}
// 如果声明一个void类型的变量,只能为它赋予undefined和null

Never类型声明

// 定义:never类型表示的是那些永不存在的值的类型。
// 一个从来不会有返回值的函数(如:如果函数内含有 while(true) {});
// 一个总是会抛出错误的函数(如:function foo() { throw new Error('Not Implemented') },foo 的返回类型是 never);

function error(message: string): never {
    throw new Error(message);
}

类型断言

在平时的编码当中,我们可能更清楚某个值的详细信息,这个时候我们可以使用 类型断言 来告诉编译器我们需要什么类型。

类型断言有两种形式:

“尖括号”语法:

let molly: any;
let b = <string>a;

“as”语法:

interface a {
  b: number;
  c: string;
}

const d = {} as a;
foo.b = 123;
foo.c = 'hello';

“尖括号”语法在书写react的时候,可能会与jsx语法发生冲突,所以这里推荐从始至终都使用“as”语法来做类型断言。

ok,关于typescript中的数据类型,本篇文章就介绍到这里。有了更多的类型定义,使得代码更为严谨。咱们下期见!🙏

点赞👍再看,已成习惯!该系列持续更新,你们的一键三连就是我持续写作的最大动力,如果对本篇博客有任何意见和建议,欢迎师兄们留言!😜😝

我是秦爱德,一个在互联网夹缝求生的程序员!