类型注解

作用:相当于强类型语言中的类型声明

语法:(变量/函数):type

数据类型

新建src/datatype.ts,里面定义各种类型的数据

原始类型:

let bool: boolean = true
let num: number = 123
let str: string = 'abc'

数组:

let arr1: number[] = [1, 2, 3]
let arr2: Array<number> = [1, 2, 3]   PS:
以上的含义是该数组只能是number;
但如果我们需要添加其他类型,就要采用联合类型方式:
  let arr2: Array<number | string> = [1, 2, 3, '4']

元组 - 是特殊的数组,它限定了数组元素的类型和个数:

let tuple: [number, string] = [0, '1']

PS:
  我们可以通过push方法为元组添加新元素,但是不能越界访问,因此实际工作中不建议这样使用:
  tuple.push(2)
  console.log(tuple) // [0, '1', 2]
  tuple[2] // 报错

函数

let add = (x: number, y: number): number => x + y

PS:
  以上包括参数和返回值类型注解,通常返回值类型注解可以省略,这就利用了ts的类型推断功能。
  也可以这样定义:
  let compute: (x: number, y: number) => number
  compute = (a, b) => a + b

对象

let obj: object = {x: 1, y: 2}
obj.x // 提示错误,因为不确定里面是否包含x属性
// 改成这样就可以了:
let obj: {x: number, y: number} = {x: 1, y: 2}
obj.x
symbol - 含义是具有唯一的值: let s1: symbol = Symbol()
let s2 = Symbol()
console.log(s1 === s2) // false
undefined/null: let un: undefined = undefined
let nu: null = null
num = undefined // 提示错误
num = null // 提示错误 PS:
  把一个变量赋值成undefined/null时,只能取undefined/null值,不能取其他类型的值;反之,其他类型却可以赋值给undefined/null,只不过需要对tsconfig.json做如下设置:
  "strictNullChecks": false,
PS:
  但是这种方式一般不推荐,如果非要对其他类型赋值undefined/null,最好使用联合类型,上面就不会报错了:
  let num: number | undefined | null = 123

void是js中的一种操作符,它可以让任何表达式返回undefined,如:

void 0 // undefined

PS:
  在ts中,void类型表示没有任何返回值的类型,比如一个没有任何返回值的函数:
  let noReturn = () => {}
any类型 - 不定义类型时默认为any类型,可以任意赋值,不建议使用 never表示永远不会有返回值的类型,有两种情况:抛出异常函数和死循环函数 let error = () => {
throw new Error('error')
}
let endless = () => {
while(true) {}
}

TypeScript基本类型的更多相关文章

  1. C# vs TypeScript - 高级类型

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

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

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

  3. TypeScript 之类型判断

    在使用 Angular 做项目的时候,对 TypeScript 的类型判断不太熟练,为了方便查找,特意对 TypeScript 的类型判断做了简单梳理.文章只是 TS 官网的内容摘要,没有高深的知识, ...

  4. TypeScript的类型

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

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

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

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

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

  7. TypeScript 条件类型精读与实践

    在大多数程序中,我们必须根据输入做出决策.TypeScript 也不例外,使用条件类型可以描述输入类型与输出类型之间的关系. 本文同步首发在个人博客中,欢迎订阅.交流. 用于条件判断时的 extend ...

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

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

  9. Typescript基础类型

    1.布尔值__boolean 2.数字__number----除了支持十进制和十六进制字面量,Typescript还支持ECMAScript 2015中引入的二进制和八进制字面量. 3.字符串__st ...

  10. JavaScript 和 TypeScript 交叉口 —— 类型定义文件(*.d.ts)

    在 <从 JavaScript 到 TypeScript 系列> 文章我们已经学习了 TypeScript 相关的知识. TypeScript 的核心在于静态类型,我们在编写 TS 的时候 ...

随机推荐

  1. 毕业三年,如何达到月薪30K?我想跟你聊聊!!

    写在前面 很多读者私信问我,自己工作三多年了,随着工作年限的不断增长,感觉自己的技术水平与自己的工作年限严重不符.想跳槽出去换个新环境吧,又感觉自己的能力达不到心仪公司的标准,即使投了简历也没人来通知 ...

  2. 96. Unique Binary Search Trees1和2

    /* 这道题的关键是:动态表尽量的选取,知道二叉搜索树中左子树的点都比根节点小,右子树的点都比根节点大 所以当i为根节点,左子树有i-1个点,右子树有n-i个点,左右子树就可以开始递归构建,过程和一开 ...

  3. java左移右移运算符详解

    在阅读源码的过程中,经常会看到这些符号<< ,>>,>>>,这些符号在Java中叫移位运算符,在写代码的过程中,虽然我们基本上不会去写这些符号,但需要明白这些 ...

  4. java数组之排序

    /** * String排序算法依据<b>词典编排顺序排序</b><br> * 所以大写字母开头的词都放在前面输出,之后才是小写之母开头的词 *@date:2018 ...

  5. vue的绑定属性v-bind

    v-bind的简略介绍 v-bind用于绑定一个或多个属性值,或者向另一个组件传递props值.目前,个人所用之中,更多的是使用于图片的链接src,a标签中的链接href,还有样式以及类的一些绑定,以 ...

  6. 电脑加载有文件的CD、DVD驱动器图标修改

    CD的图标有一定限制,不知道你说的是有盘状态还是默认的状态.插入光盘状态:用autorun.inf格式:[autorun]open=Install.exe 点击光盘时的起动程序icon=Autorun ...

  7. 【递归】P1157组合的输出

    题目相关 题目描述 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且 r ≤n),我们可以简单地将n个元素理解为自然数1,2,-,n从中任取r个数. 现要求你输出所有组合. ...

  8. 配置Oracle数据库和监听随Linux系统自启动【转】

     配置Oracle数据库和监听随Linux系统自启动     在某些情况下需要在Linux操作系统上提供一种无人值守的随机启动Oracle的功能,目的也许仅仅是为了帮助那些对Oracle细节非常不关心 ...

  9. 一文读懂 SuperEdge 边缘容器架构与原理

    前言 superedge是腾讯推出的Kubernetes-native边缘计算管理框架.相比openyurt以及kubeedge,superedge除了具备Kubernetes零侵入以及边缘自治特性, ...

  10. 机器学习1-sklearn&字典特征抽取

    sklearn数据集 数据集API介绍 sklearn.datasets 加载获取流行数据集 datasets.load_*() 获取小规模数据集,数据包含在datasets里 datasets.fe ...