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:很多时候自己亲手敲一遍强于看文档十遍!下节继续吧!
我的博客即将同步至腾讯云+社区,邀请大家一同入驻。
TypeScript学习笔记之基础类型的更多相关文章
- TypeScript学习笔记之接口类型
TypeScript的接口,个人理解就是一种约束,包括各种类型的契约或者代码定义上的契约.当然,和java中的用法基本一致,接口可以被继承也可以被实现. 定义一个简单的interface interf ...
- TS学习笔记----(一)基础类型
布尔值: boolean let isDone: boolean = false; 数字: number 和JavaScript一样,TS里的所有数字都是浮点数. 支持十进制和十六进制字面量,TS还支 ...
- JDK7学习笔记之基础类型
printf()的基础用法: 变量的基础用法: 字符的输出:
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
随机推荐
- [转载] 谷歌技术"三宝"之MapReduce
转载自http://blog.csdn.net/opennaive/article/details/7514146 江湖传说永流传:谷歌技术有"三宝",GFS.MapReduce和 ...
- mysql 查询数据库内各表的占用大小
select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB') as data_size, concat(truncate(ind ...
- Java数据结构和算法(一)——简介
本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...
- 调试利器:SSH隧道
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文作者:ivweb 吴浩麟 原文出处:IVWEB社区 未经同意,禁止转载 在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需 ...
- JS组件系列——Gojs组件,前端图形化插件之利器
前言:之前分享过两篇关于流程画图的前端组件,使用的jsPlumb.这个组件本身还不错,使用方便.入门简单.轻量级,但是使用一段时间下来,发现一些弊病,比如组件不太稳定,初始进入页面的时候连线的样式有时 ...
- NETStandard,NETFx,Mono,NETCore,ASPNetCore 之间关系的整理
因为现在很多人对这几者之间的关系还不甚了解,这里根据我所知来做一个大概的介绍...... .NET Standard: .NET标准,只要符合这个标准实现类库,即可在支持此标准的Run ...
- Hadoop实战训练————MapReduce实现PageRank算法
经过一段时间的学习,对于Hadoop有了一些了解,于是决定用MapReduce实现PageRank算法,以下简称PR 先简单介绍一下PR算法(摘自百度百科:https://baike.baidu.co ...
- 2718:晶晶赴约会-poj
总时间限制: 1000ms 内存限制: 65536kB 描述 晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1.3.5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES:如果不能 ...
- redis—操作基础
内存数据库: 1.双击redis-server.exe =>启动2.双击redis-cli.exe =>打开管理控制台3.查看所有key keys *4.查看key类型 type myKe ...
- JAVA的向上转型和向下转型怎么理解呢?
在定义中是子类向父类转型称为向上转型,父类向子类转型是向下转型(必须先向上转型过,才能向下转型), 但是在下面类定义后,我得到的结果却不同.求大佬解惑 class superclass{ public ...