原文:TypeScript基本知识点整理

一、number

let num1 : number = 20;
let num2 : number = 175.5;
let a1 : number = Infinity; //正无穷大
let a2 : number = -Infinity; //负无穷小
let a3 : number = NaN;

  这和 js 一样,Infinity、-Infinity、NaN 也是属于 Number 类型的;

二、undefined

let un : undefined = undefined;

  在 ts 中,undefined 也是单独的数据类型,如上。需要注意的是,undefined类型的变量不能被赋值成其他类型,“undefined 类型的数据只能被赋值为 undefined”。

// 报错,不能编译
let un: undefined;
un = 5;

三、null

let nu : null = null;

  同上,null 类型的变量只能赋值为 nul。

  null 是一个空指针对象, undefined 是未初始化的变量,所以可以把 undefined 看成一个空变量, 把 null 看成一个空对象。

特别注意:在 ts 中, null 和 undefined 类型,是所有其他类型的子类型,即,这哥俩可以被赋值给所有其他类型,并且被赋值后在赋值原来数据类型的数据不会报错...

// 不会报错,成功编译
var un = 5;
un = null;
un = 6;

四、string 类型

//值类型
let str : string = '你好!'
//引用类型
let str1 : String = new String('你好!')

五、boolean 类型

let boo : boolean = true;
let boo1 : boolean = false

六、symbol 类型(js 在 es6 版本拓展的新的基础数据类型)

let sy : symbol = Symbol('bar');

  和 js 一样,构造这个数据类型的时候只能通过如上的 Symbol 构造函数创建。

七、数组 类型

//字面量
let arr1 : number[] = [1, 2] //泛型---->相当于数组中每个元素的类型
let arr2 : Array<string> = ['a', 's'] //构造函数
let arr3 : string[] = new Array('a', 's') //联合类型-->这里的联合类型的意思是,数组中元素的类型可以是number 或 string,两种都有也可以
let arr4 : Array<number | string> = [2, 'a', 3, 'b', ...]

八、元组 类型(tuple)

  这是 ts 特有的数据类型,先看示例:

let tup : [string, number] = ['asdasd', 43233];

  初看上去,和数组看起来有点类似,但是,是由区别的:元组类型由长度限制,并且每一个位置上的数据类型一一对应,如上例中 tup 数组长度只能是 2,且 tup[0] 必须是 string 型,tup[1] 必须是 number 型,这三点是区别于数组的联合类型的地方。

九、枚举 类型(enum)

  枚举类型是个蛋碎一地的类型,这里只记录常用的,研究细节还请移步:Typescript - 枚举

数字枚举:

enum REN {
// nan = 1 ----->初始化下标
nan,
nv,
yao
}
console.log(REN.nan)//0
console.log(REN.nv)//1
console.log(REN.yao)//2
//使用数字枚举时,TS 会为枚举成员生成反向映射
console.log(REN[2])// yao

  当然,数字枚举的下标默认从 0 开始,也可以自行设置成员的初始值,他们会自行递增。

字符串枚举:

enum SIJI {
chun = '春',
xia = '夏',
qiu = '秋',
dong = '冬'
} console.log(SIJI.chun)//春
console.log(SIJI.xia)//夏
console.log(SIJI.qiu)//秋
console.log(SIJI.dong)//冬

  字符串枚举不支持成员自增长,每个成员必须要初始化,且字符串枚举不会为成员生成反向映射。

十、void 类型

  表示没有返回值,一般用于方法(function)中。

// es 5
function fn() : void {
console.log('...')
} // es6
() : void => {
console.log('...')
}

  这里,我们也可以指定函数的返回值为 undefined。因为在 js 中,如果函数没有返回值,则会默认返回 undefined。不过,使用 void 类型可以使表意更清晰。

十一、 any 类型

  any 类型是一个最通用的类型,其他类型都是 any 的子类型,因此,any 类型可以被赋值成任何类型的值。

let an : any = 'any 类型';
console.log(an)//any 类型
an = 25;
console.log(an)//25

  关于 any 有两点需要注意:

  1)如果在声明变量时,没有声明其类型,也没有初始化,那么在 ts 做类型推断的时候会被判断成 any 类型。

  2)在 any 类型上可以访问任何属性,即使这个属性对于某些数据类型不存在:

let something: any = 42
something.mayExist() // 没问题,因为其可能在运行时存在
something.toFixed() // 没问题,虽然确实存在,但是编译器并不会去检查

十二、never 类型

  never 类型表示永远不会存在的值的类型,常用于描述函数。never 是任何类型的子类型,never 没有人资类型,即 never 是最后一层,因此,never 型的数据只能被赋值成 never 型。

never 类型通常用于两种情况:

1.用来描述抛出错误的函数:

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

2.函数中存在无法到达的终点,如死循环:

function fn() : never {
while (true) {
// do something
}
}

十三、日期 类型

let da : Date = new Date()
console.log(da)

十四、正则 类型

//构造函数声明法
let reg1 : RegExp = new RegExp('ljy','gi')
console.log(reg1) //字面量的声明法
let reg2 : RegExp = /ljy/gi
console.log(reg2)

Typescript - 变量类型的更多相关文章

  1. typescript学习笔记(一)---基础变量类型

    作为一个前端开发者,学习新技术跟紧大趋势是必不可少的.随着2019年TS的大火,我打算利用一个月的时间学习这门语言.接下来的几篇文章是我学习TS的学习笔记,其中也会掺杂一些学习心得.话不多说,先从基础 ...

  2. C# vs TypeScript - 高级类型

    总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...

  3. 从C#到TypeScript - 变量

    总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...

  4. 从C#到TypeScript - 高级类型

    C# vs TypeScript - 高级类型 上一篇讲了基础类型,基本上用基础类型足够开发了,不过如果要更高效的开发,还是要看下高级类型,这篇和C#共同点并不多,只是延用这个主题. 联合类型 可以从 ...

  5. TypeScript的类型

    ⒈TypeScript的类型 JavaScript语言的数据类型包括以下7种: 1.boolean(布尔),true || false 2.null,表明null值得特殊关键字,JavaScript是 ...

  6. TypeScript入门三:TypeScript函数类型

    TypeScript函数类型 TypeScript函数的参数 TypeScript函数的this与箭头函数 TypeScript函数重载 一.TypeScript函数类型 在上一篇博客中已经对声明Ty ...

  7. 编写TypeScript工具类型,你需要知道的知识

    什么是工具类型 用 JavaScript 编写中大型程序是离不开 lodash 工具的,而用 TypeScript 编程同样离不开工具类型的帮助,工具类型就是类型版的 lodash .简单的来说,就是 ...

  8. React 与 Hooks 如何使用 TypeScript 书写类型?

    React 与 Hooks 如何使用 TypeScript 书写类型? 本文写于 2020 年 9 月 20 日 函数组件与 TS 对于 Hooks 来说是不支持使用 class 组件的. 如何在函数 ...

  9. Python学习--03变量类型

    变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创 ...

随机推荐

  1. ubuntu19.10安装cuda-10.1

    ubuntu19.10安装cuda-10.1 1.安装N卡驱动: 打开ubuntu的软件和更新,设置N卡驱动 2.查看ubuntu显卡驱动 nvidia-smi 显示: Sun Feb 23 06:4 ...

  2. jdk8下载地址

    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Java SE Binaries ...

  3. String--课后作业2

    一.String.equals()的实现方法 对象(object类)的equals方法,有时候根据自己的需要,需要重写此方法(比如两个同类对象,如果其属性name相同就定为这两个对象是相同的,那么就需 ...

  4. javascript 的七种基本数据类型

    六种基本数据类型 undefined null string boolean number symbol(ES6) 一种引用类型 Object 为什么要引入 Symbol? ES5的对象中的属性名是字 ...

  5. callable和runnable的区别

    Runnable接口源码 @FunctionalInterface public interface Runnable { /** * When an object implementing inte ...

  6. EXAM-2018-08-21

    EXAM-2018-08-21 自己真的是菜的恐怖 D:Fence Building 欧拉公式:V-E+F=2 在平面中:V为顶点个数,E为边数,F为区域数 在简单几何体中:V为顶点个数,E为边数,F ...

  7. IntelliJ IDEA项目断开版本管理解决方案

    今天使用idea时打开项目突然发现项目不受svn管理(项目目录依然受svn管理,只是idea脱管了),如遇到可用以下方法: 图片示例: 1. 2. 希望能帮到你

  8. Spring Boot Admin最佳实践

    本文不进行Spring Boot Admin入门知识点说明 在Spring Boot Actuator中提供很多像health.metrics等实时监控接口,可以方便我们随时跟踪服务的性能指标.Spr ...

  9. 57)PHP,自动加载类注意项

    关于这个里面的那个if  里面判断是否是核心启动类,一般会想到,用in_array或者是isset              in_array判断是数组里面有没有这个值,但是isset判断的是数组里面 ...

  10. C语言中传值和C++的传引用

    在C语言中,传址其实也时传值的一种,首先地址其实也时可以看做是一个值来进行传递的. 在C++中有一种说法叫传引用,就是&变量名. 比如: /* * 传值 int a = 3; void fun ...