原文: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. PAT Advanced 1033 To Fill or Not to Fill (25) [贪⼼算法]

    题目 With highways available, driving a car from Hangzhou to any other city is easy. But since the tan ...

  2. 【网易官方】极客战记(codecombat)攻略-森林-盐碱地salted-earth

    保卫森林定居点开始. 简介 这个关卡引入了布尔 “or” 的概念. 在两个布尔值之间放置一个 or 将返回一个布尔值,就像 + 需要 2 个数字并且吐出另一个数字一样. 如果前或后的值为 true,则 ...

  3. 【按位dp】1出现的次数

    l-r1出现的次数 注意端点处理 垃圾算法书 垃圾代码毁我青春 自己研究写了写 #include <iostream> #include <string> #include & ...

  4. restful的简单使用

    根据http的不同方法,访问不同路由的相同控制器下的不同方法可以实现restful的使用 分别对应 路由方式 get put delete post 对应操作 获取 更新 删除 添加 其中如果要在非l ...

  5. 你知道你对 JSON Web Token 的认识存在误解吗

    1.前言 JSON Web Token (JWT) 其实目前已经广为软件开发者所熟知了,但是 JOSE (Javascript Object Signing and Encryption) 却鲜有人知 ...

  6. SaltSatck常用指令一

    1.查看版本号: salt --version [root@master ~]# salt --version salt (Fluorine) [root@master ~]# 2.显示依赖关系及版本 ...

  7. Ubuntu更改源地址列表

    1. 备份源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2.打开源列表 sudo gedit /etc/apt/sour ...

  8. PAT甲级——1009 Product of Polynomials

    PATA1009 Product of Polynomials Output Specification: For each test case you should output the produ ...

  9. Linux的iptables菜鸟初学

    什么是iptables? iptables是linux下的命令行工具,操控的是linux的防火墙,这个防火墙叫netfilter.通俗的说应该是用户通过iptables把安全设定设置给netfilte ...

  10. python或pip'不是内部或外部命令”

    Python不是内部外部命令:说明在环境变量中没有添加python的安装文件夹路径 所以我们在path环境变量中添加 E:\python36; Pip不是内部外部命令:说明在环境变量中没有添加pyth ...