TypeScript学习笔记之基础类型

从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧:

typescript最新版本2.6,所有演示代码均基于此版本

开始之前确定安装了如下npm包:

npm i typescript -g    // ts全局包
npm i ts-node -g        // 使用ts-node可以直接运行ts文件

基础类型

布尔类型

let isDone: boolean = false
let isExist: boolean = true
console.log(isDone, isExist)

运行:

控制台执行命令:ts-node dataType.ts

->false true

数值类型(number)

ts的number类型继承了es6的number,额外支持二进制和八进制数值。

let decLiteral: number = 6;   // 十进制
let hexLiteral: number = 0xf00d;    // 16进制
let binaryLiteral: number = 0b1010;   // 二进制
let octalLiteral: number = 0o744;   // 八进制
console.log(decLiteral, hexLiteral, binaryLiteral, octalLiteral)

运行:

6 61453 10 484

字符串类型

let str: string = '我是晁州,我很可爱。。。'
console.log(str);

运行:

我是晁州,我很可爱。。。

模板字符串:

let str: string = '我是晁州,我很可爱。。。'
console.log(str);
let tempString: string = `i am a template str:${str}`
console.log(tempString);

运行:

我是晁州,我很可爱。。。
i am a template str:我是晁州,我很可爱。。。

数组类型

let arr1: Array<number> = [1,2,3,4]   // 使用尖括号形式声明(数组泛型)
console.log(arr1);
let arr2: number[] = [2,3,4,5]      // 使用方括号声明
console.log(arr2);

运行:

[ 1, 2, 3, 4 ]
[ 2, 3, 4, 5 ]

元组类型(Tuple)

元组类型和数组相似,不同的是,元组每一项的数据类型可以不同(数组使用any类型也可以实现每一项类型不同)

每一项的元素类型必须一致,否则编译出错

let tuple1: [string, number, boolean]
tuple1 = ['admin', 34, false]
console.log(tuple1);

运行:

[ 'admin', 34, false ]

枚举类型

ts支持枚举类型,使用如下:

enum Color {red, green, blue}   // 默认从0开始编号,即red=0,可以直接指定red=1开始
let c: Color = Color.red
console.log(c === 0, c === Color.red);

let colorName: string = Color[1]
console.log('Color[1]的name是:', colorName);

运行:

true true
Color[1]的name是: green

any类型

any类型表示任意类型,类似于golang中的interface{}类型,any类型可以赋值任意类型。

let any1: any = 4
console.log(any1);
any1 = false
console.log(any1);
any1 = undefined
console.log(any1);
let anyArr: any[] = [1, true, 'hello']
console.log(anyArr);
let anyArr2: Array<any> = [false, 0x1234, 'world']    // 泛型声明
console.log(anyArr2);

运行:

4
false
undefined
[ 1, true, 'hello' ]
[ false, 4660, 'world' ]

void类型(空类型)

void类型表示没有任何类型,func无返回值时可以使用此类型。

function voidFunc(): void {
  console.log('void function invoked!');
}

voidFunc()

let voidVar: void = undefined   // void类型只能赋值undefined或null
console.log(voidVar);
voidVar = null
console.log(voidVar);

运行:

void function invoked!
undefined
null

undefined和null类型

这两种类型是所有类型的子类型,没毛线用。

let a: undefined = undefined
let b: null = null
console.log(a, b);

let num1: number = 2
console.log(num1);
num1 = a      // undefined或null类型可以被任意类型给赋值,和any恰好相反
console.log(num1);
let c: any
c = 23
console.log(c);

运行:

undefined null
2
undefined
23

never类型

never类型是那些总是会抛出异常,或者根本就不会有返回值的函数返回值类型。

let a: never
let b: string = 'admin'
b = a
console.log(a, b);

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

function neverFunc(): never{
  while(true){

  }
}

运行:

undefined undefined

类型断言

断言好比其它语言里的类型转换,但是不进行特殊的数据检查和结构。

let someValue: any = 'i am a unknown value'
console.log(someValue.length);
let len: number = (someValue as string).length
console.log(len);

运行:

20
20

今晚就学习到这里了,ps:很多时候自己亲手敲一遍强于看文档十遍!下节继续吧!

我的博客即将同步至腾讯云+社区,邀请大家一同入驻。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏章鱼的慢慢技术路

用Go语言实现一个简单的聊天机器人

Go语言基本构成要素:标识符、关键字、字面量、分隔符、操作符。它们可以组成各种表达式和语句,而后者都无需以分号结尾。

1052
来自专栏塔奇克马敲代码

第4章 表达式

1774
来自专栏Golang语言社区

厚土Go学习笔记 | 18. 数组

数组由一组数据类型相同的值组成。 定义一个整数数组 var a [10]int 这个数组由10个整数组成的。 数组的长度是其类型的一部分,因此数组不能改变大小。...

3295
来自专栏web前端-

JavaScript基础概述

    1.常量: 常量就是在程序运行过程中,不会发生变化的量,常量通常用来表示固定不变的量,比如圆周率,万有引力常量

632
来自专栏Java学习123

40个你可能不知道的Python的特点和技巧

26510
来自专栏Nian糕的私人厨房

JavaScript 函数

通常来说,一个函数就是一个可以被外部代码调用(或者函数本身递归调用)的"子程序",和程序本身一样,一个函数的函数体是由一系列的语句组成的,函数可以接收传入参数,...

723
来自专栏函数式编程语言及工具

Scalaz(2)- 基础篇:随意多态-typeclass, ad-hoc polymorphism

  scalaz功能基本上由以下三部分组成: 1、新的数据类型,如:Validation, NonEmptyList ... 2、标准scala类型的延伸类型,...

2107
来自专栏前端新视界

常用的 JS 排序算法整理

关于排序算法的问题可以在网上搜到一大堆,但是纯 JS 版比较零散,之前面试的时候特意整理了一遍,附带排序效率比较。 //1.冒泡排序 var bubbleSo...

2119
来自专栏C/C++基础

C++编码格式建议

每个人都可能有自己的代码风格和格式,但如果一个项目中的所有人都遵循同一风格的话,这个项目就能更顺利地进行。每个人未必能同意下述的每一处格式规则,而且其中的不少规...

972
来自专栏与神兽党一起成长

前序遍历树

代码来自:pickle and cPickle – Python object serialization 首先树的结构,如图

1222

扫码关注云+社区