本节咱们学习 TypeScript 语言中的数据类型,有:数字类型、字符串类型、布尔值、数组、元组等等。TypeScript 反对与 JavaScript 简直雷同的数据类型,此外还提供了实用的枚举类型不便咱们应用。

数字类型

JavaScript 中一样,TypeScript 中的所有数字都是浮点数。这些浮点数的类型为 number 类型。number 类型除了反对十进制和十六进制字面量,还反对 ECMAScript 2015 中引入的二进制和八进制字面量。

示例:

申明数字类型的变量,能够是二进制、十进制、十六进制、八进制示意模式:

let n1: number = 8;          // 十进制let n2: number = 0xf00d;     // 十六进制let n3: number = 101010;     // 二进制let n4: number = 0o633;      // 八进制console.log(n1, n2, n3, n4);

编译成 JavaScript 代码:

var n1 = 8;      // 十进制var n2 = 0xf00d; // 十六进制var n3 = 101010; // 二进制var n4 = 411;    // 八进制console.log(n1, n2, n3, n4);// 8 61453 101010 411

什么是十进制、二进制、八进制、十六进制:

  • 十进制:十进制数就是用 012 ....9,这十个数来示意的数。
  • 二进制:二进制数据是用 01 两个数码来示意的数。它的基数为 2,进位规定是“逢二进一”,借位规定是“借一当二”。
  • 八进制:八进制是一种以 8 为基数的计数法,采纳 01234567 八个数字,逢八进 1
  • 十六进制:十六进制是计算机中数据的一种示意办法。同咱们日常中的十进制表示法不一样。个别用数字 09 和字母 AF(或 a~f)示意,这些数字和字母任意组合用来示意 0~15 之间的某个字。其中 A~F 示意 10~15,这些称作十六进制数。

布尔类型

布尔类型 boolean 示意逻辑值,只有 truefalse 这两个值。

示例:

例如申明两个布尔类型的变量,并输入:

const b1: boolean = true;const b2: boolean = false;console.log(b1, b2);

将上述代码编译成 JavaScript 代码:

var b1 = true;var b2 = false;console.log(b1, b2);

输入:

true false

字符串类型

字符串类型 string 用于示意文本数据类型,与 JavaScript 中一样,能够应用单引号 ' 或双引号 " 来示意字符串。

示例:

申明一个字符串类型的变量:

let str: string = "侠课岛";console.log(str);

输入:

侠课岛

数组类型

数组类型有两种示意办法,第一种在元素类型后接上中括号 [],示意此类型元素组成的一个数组。

示例:

例如申明一个由数字类型组成的数组 num,和一个由字符串类型组成的数组 character

// 在元素类型前面加上[],定义数字类型数组let num: number[] = [1, 2, 3];console.log(num);// 定义字符串类型数组let character: string[] = ['a', 'b', 'c'];console.log(character);

第二种形式是应用数组泛型,格局为 Array<元素类型>

示例:

例如申明一个数字类型的数组:

// 应用数组泛型let arr: Array<number> = [1, 2, 3];console.log(arr2);

将下面的代码都编译成 JavaScript 代码:

// 应用数组泛型var arr = [1, 2, 3];console.log(arr2);

输入:

[ 1, 2, 3 ]

元组类型

元组示意已知元素数量和类型的数组,元组中的元素能够由是不同类型,然而要留神,所定义类型的个数和程序必须与元素值一一对应,少一个都不行。

示例:

申明一个元组,元组中的第一个元素为字符串类型,第二个元素为数字类型:

// 类型和值必须一一对应let tuple: [string, number] = ['小飞侠', 18];    console.log(tuple);console.log(tuple[0]);   

编译成 JavaScript 代码:

// 类型和值必须一一对应var tuple = ['小飞侠', 18]; console.log(tuple);console.log(tuple[0]); 

输入:

[ '小飞侠', 18 ]小飞侠

枚举类型

枚举类型 enum 用于定义数值汇合。

示例:

申明一个枚举类型的变量 Fruits,这个变量中有三个不同的值:

enum Fruits {watermelon, Apple, Litchi};console.log(Fruits);

将代码编译成 JavaScript 代码:

var Fruits;(function (Fruits) {    Fruits[Fruits["watermelon"] = 0] = "watermelon";    Fruits[Fruits["Apple"] = 1] = "Apple";    Fruits[Fruits["Litchi"] = 2] = "Litchi";})(Fruits || (Fruits = {}));;console.log(Fruits);

执行代码后输入后果为:

{  '0': 'watermelon',  '1': 'Apple',  '2': 'Litchi',  watermelon: 0,  Apple: 1,  Litchi: 2}

any 任意类型

任意值是 TypeScript 针对编程时类型不明确的变量应用的一种数据类型,申明为 any 的变量能够赋予任意类型的值。

示例:

例如申明一个 any 类型的变量 unknown

let unknown: any;unknown = 7;         // 数字类型console.log(unknown);unknown = 'xkd';     // 字符串类型console.log(unknown);unknown = false;     // 布尔类型console.log(unknown);

将上述代码编译成 JavaScript 代码:

var unknown;unknown = 7; // 数字类型console.log(unknown);unknown = 'xkd'; // 字符串类型console.log(unknown);unknown = false; // 布尔类型console.log(unknown);

输入:

7xkdfalse

void 类型

Java 等语言中,如果一个办法没有返回值,则默认该办法返回值类型为 void 类型。

JavaScript 中并没有此类型,这个 TypeScript 新增的类型。

void 可用于标识办法返回值的类型,示意该办法没有返回值。

示例:

如果定义函数时,没有返回值,倡议在函数名前面接一个 void。例如上面这个函数 show() ,咱们没有给它指定返回值,所以指定这个函数的返回值为 void 类型:

function show(): void {    console.log("你好,侠课岛!");}// 调用函数show();  

编译成 JavaScript 代码:

function show() {    console.log("你好,侠课岛!");}// 调用函数show();

输入:

你好,侠课岛!

Null类型和Undefined 类型

null 类型和 undefined 类型与 JavaScript 中的对应类型十分相似,这两个类型别离是 Null 类型和 Undefined 的间接量,也是惟一的值。

示例:
var n = null;var u = undefined;console.log(n, u);   // null undefined

Never类型

Never 类型示意的是那些永不存在的值的类型。

示例:

在申明变量时,咱们能够将变量申明为 never 类型:

let a: never;

never 类型是任何类型的子类型,也能够赋值给任何类型。

示例:
let a: never;let b: number;let c: string;// never类型能够赋值给never类型a = (()=>{     throw new Error('xkd');})();// never类型能够赋值给number类型b = (()=>{    throw new Error('xkd');})();// never类型能够赋值给string类型c = (()=>{     throw new Error('xkd');})();

然而没有类型是 never 的子类型或能够赋值给 never 类型,即便 any 也不能够赋值给 never

示例:

例如将数字类型的值赋值给 never 类型:

let a: never;a = 100;    // 输入: Type '100' is not assignable to type 'never'

链接:https://www.9xkd.com/