TypeScript 基本类型(一)

1、boolean 布尔值 true/false

let isDone: boolean = false;

2、number 数字:和JavaScript 一样,TypeScript 里的所有数字都是浮点数。另外支持二进制,八进制,十进制,十六进制。

1let decLiteral: number = 6; 2let hexLiteral: number = 0xf00d; 3let binaryLiteral: number = 0b1010; 4let octalLiteral: number = 0o744;

3、string 字符串:跟JavaScript一样,可以使用双引号或者单引号表示。

1let a: string = "bob"; 2a = "smith";

模板字符串:被反引号包围( `),并且以${ expr }这种形式嵌入表达式

4、数组:两者方式定义数组。

  • 在元素类型后加 [] 。

    let list: number[] = [1, 2, 3];

  • 使用数组泛型

    let list: Array<number> = [1, 2, 3];

5、Tuple 元组:元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

1// Declare a tuple type 2let x: [string, number]; 3// Initialize it 4x = ['hello', 10]; // OK 5// Initialize it incorrectly 6x = [10, 'hello']; // Error

联合类型:

6、enum枚举:enum类型是对JavaScript标准数据类型的一个补充。

1enum Color {Red, Green, Blue} 2let c: Color = Color.Green;

默认情况下,从0开始为元素编号。 你也可以手动的指定成员的数值。 例如,我们将上面的例子改成从 1开始编号:

1enum Color {Red = 1, Green, Blue} 2let c: Color = Color.Green;

或者,全部都采用手动赋值:

1enum Color {Red = 1, Green = 2, Blue = 4} 2let c: Color = Color.Green;

枚举类型提供的一个便利是你可以由枚举的值得到它对应的名字:

1enum Color {Red = 1, Green, Blue} 2let colorName: string = Color[2]; 3 4alert(colorName); // 显示'Green'因为上面代码里它的值是2

7、any :允许你在编译时可选择地包含或移除类型检查。

在编程阶段还不清楚类型的变量指定一个类型,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。

1let notSure: any = 4; 2notSure = "maybe a string instead"; 3notSure = false; // okay, definitely a boolean

你可能认为 Object有相似的作用,就像它在其它语言中那样。 但是 Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法:

1let notSure: any = 4; 2notSure.ifItExists(); // okay, ifItExists might exist at runtime 3notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check) 4 5let prettySure: Object = 4; 6prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.

当你只知道一部分数据的类型时,any类型也是有用的。 比如,你有一个数组,它包含了不同的类型的数据:

1let list: any[] = [1, true, "free"]; 2 3list[1] = 100;

8、void:某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void

1function warnUser(): void { 2 alert("This is my warning message"); 3}

声明一个void类型的变量没有什么大用,因为你只能为它赋予undefinednull

let unusable: void = undefined;

9、null 和 undefined

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

但当你指定了--strictNullChecks标记,nullundefined只能赋值给void和它们各自。

 也许在某处你想传入一个 stringnullundefined,你可以使用联合类型string | null | undefined。

10、never

never类型表示的是那些永不存在的值的类型。

 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。

never类型是任何类型的子类型,也可以赋值给任何类型;然而,_没有_类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never

1// 返回never的函数必须存在无法达到的终点 2function error(message: string): never { 3 throw new Error(message); 4} 5 6// 推断的返回值类型为never 7function fail() { 8 return error("Something failed"); 9} 10 11// 返回never的函数必须存在无法达到的终点 12function infiniteLoop(): never { 13 while (true) { 14 } 15}

11 类型断言:判断类型

类型断言有两种形式。 其一是“尖括号”语法:

1let someValue: any = "this is a string"; 2 3let strLength: number = (<string>someValue).length;

另一个为as语法:

1let someValue: any = "this is a string"; 2 3let strLength: number = (someValue as string).length;
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

一篇文章带你了解JavaScript日期

日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用