Typescript的数据类型总结

是什么

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

在开发阶段,可以为明确的变量定义为某种类型,这样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一样typescript的数值类型都是浮点数,可支持二进制、八进制、十进制和十六进制。

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';
复制代码

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

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

array

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

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

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

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

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

tuple

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

扫描二维码关注公众号,回复: 13739789 查看本文章
let tupleArr:[number,string,boolean];
tupleArr = [12,'34',true]; // yes
tupleArr = [12,'34']; // no
复制代码

enum

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

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

any

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

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

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

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

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

null和undefined

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

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

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

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

void

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

function hello():void {
    alert('Hello Runoob')
}
复制代码

never

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

但是没有类型是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};
复制代码

总结

javascript基本一致,也分成:

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

在基础类型上,typescript增添了void、any、emun等原始类型。

如果你觉得此文对你有帮助,点个赞,鼓励一下。

猜你喜欢

转载自juejin.im/post/7078584459385110559