从今天开始学习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:很多时候自己亲手敲一遍强于看文档十遍!下节继续吧!

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

TypeScript学习笔记之基础类型的更多相关文章

  1. TypeScript学习笔记之接口类型

    TypeScript的接口,个人理解就是一种约束,包括各种类型的契约或者代码定义上的契约.当然,和java中的用法基本一致,接口可以被继承也可以被实现. 定义一个简单的interface interf ...

  2. TS学习笔记----(一)基础类型

    布尔值: boolean let isDone: boolean = false; 数字: number 和JavaScript一样,TS里的所有数字都是浮点数. 支持十进制和十六进制字面量,TS还支 ...

  3. JDK7学习笔记之基础类型

    printf()的基础用法: 变量的基础用法: 字符的输出:

  4. C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

    一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...

  5. C#学习笔记(基础知识回顾)之值类型和引用类型

    一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...

  6. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  7. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. Java多线程学习之Lock与ReentranLock详解

    synchronized 是内置锁,而Lock 接口定义的是显示锁,Lock 提供了一种可重入的.可轮询的.定时的以及可中断的锁获取操作. ReenTranLock实现了Lock接口,并提供了与syn ...

  2. Node学习笔记 http

    node url querystring 第二个参数指定分隔符 也可以指定三个参数,效果和两个参数类似 不同于querystring,下面是querystringfy的用法 queryescape与e ...

  3. IE6常见CSS解析Bug及hack

    IE6常见CSS兼容问题总结 1)图片间隙 A)div中的图片间隙(该bug出现在IE6及更低版本中) 描述:在div中插入图片时,图片会将div下方撑大三像素. hack1:将</div> ...

  4. 【python】Python的单例模式

    原文:http://blog.csdn.net/ghostfromheaven/article/details/7671853 单例模式:保证一个类仅有一个实例,并提供一个访问他的全局访问点. 实现某 ...

  5. SDRAM操作(FPGA实现)

    对SDRAM基本概念的介绍以及芯片手册说明,请参考上一篇文章SDRAM操作说明. 1. 说明 如图所示为状态机的简化图示,过程大概可以描述为:SDRAM(IS42S16320D)上电初始化完成后,进入 ...

  6. C#中四步轻松使用log4net记录本地日志

    在这里,记录我在项目中使用log4net记录本地日志的步骤.在不会之前感觉很难,很神秘,一旦会了之后其实没那么难.其实所有的事情都是一样的,下面我就分享一下我使用log4Net的经验. 第一步:首先从 ...

  7. SQL Server 分页技术(存储过程)

    alter proc proc_getpage ), )='*', ), )='asc', @pagesize int , @pageindex int, )='' as begin declare ...

  8. websocket做手机页面聊天与PC页面聊天一对一的即时通讯

    当时要写这个需求的时候,很头痛,手机端页面的客服功能,相当于QQ这样一个一对一聊天室功能了,瞬间蒙蔽的我也不知道用什么去写这个东西,一开始用ajax,定时器去写,写着写着发现这尼玛不在同一个页面怎么做 ...

  9. 《java.util.concurrent 包源码阅读》09 线程池系列之介绍篇

    concurrent包中Executor接口的主要类的关系图如下: Executor接口非常单一,就是执行一个Runnable的命令. public interface Executor { void ...

  10. Java之多态

    一.多态 1.含义 一种类型,呈现多种状态.主要关注类多态.方法多态. 2.多态的前提:继承 使用父类引用指向子类对象: Animal a1 = new Cat(): Object a1 = new ...