是什么
typescript和javascript几乎一样,拥有相同的数据类型,另外在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
元组类型,允许表示一个已知元素和类型的数组,各元素的类型不必相同
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
在javascript中null表示 “什么都没有”,是一个只有一个值的特殊类型,表示一个空对象引用,而undefined表示一个没有设置值的变量。
默认情况下null和undefined是所有类型的子类型,就是说你可以把null和undefined赋值给number类型的变量
let num:number | undefined; // 数值类型或者undefined console.log(num); // 正确 num = 123; console.log(num); // 正确
但是ts配置了--strictNullChecks标记,null和undefined只能赋值给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};
总结
和javascript基本一致,也分成:
- 1、基本类型
- 2、引用类型
在基础类型上,typescript增添了void、any、emun等原始类型。
到此这篇关于Typescript数据类型的文章就介绍到这了,更多相关Typescript数据类型内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!