TypeScript基本类型
类型注解
作用:相当于强类型语言中的类型声明
语法:(变量/函数):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基本类型的更多相关文章
- C# vs TypeScript - 高级类型
总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...
- 从C#到TypeScript - 高级类型
C# vs TypeScript - 高级类型 上一篇讲了基础类型,基本上用基础类型足够开发了,不过如果要更高效的开发,还是要看下高级类型,这篇和C#共同点并不多,只是延用这个主题. 联合类型 可以从 ...
- TypeScript 之类型判断
在使用 Angular 做项目的时候,对 TypeScript 的类型判断不太熟练,为了方便查找,特意对 TypeScript 的类型判断做了简单梳理.文章只是 TS 官网的内容摘要,没有高深的知识, ...
- TypeScript的类型
⒈TypeScript的类型 JavaScript语言的数据类型包括以下7种: 1.boolean(布尔),true || false 2.null,表明null值得特殊关键字,JavaScript是 ...
- TypeScript入门三:TypeScript函数类型
TypeScript函数类型 TypeScript函数的参数 TypeScript函数的this与箭头函数 TypeScript函数重载 一.TypeScript函数类型 在上一篇博客中已经对声明Ty ...
- 编写TypeScript工具类型,你需要知道的知识
什么是工具类型 用 JavaScript 编写中大型程序是离不开 lodash 工具的,而用 TypeScript 编程同样离不开工具类型的帮助,工具类型就是类型版的 lodash .简单的来说,就是 ...
- TypeScript 条件类型精读与实践
在大多数程序中,我们必须根据输入做出决策.TypeScript 也不例外,使用条件类型可以描述输入类型与输出类型之间的关系. 本文同步首发在个人博客中,欢迎订阅.交流. 用于条件判断时的 extend ...
- React 与 Hooks 如何使用 TypeScript 书写类型?
React 与 Hooks 如何使用 TypeScript 书写类型? 本文写于 2020 年 9 月 20 日 函数组件与 TS 对于 Hooks 来说是不支持使用 class 组件的. 如何在函数 ...
- Typescript基础类型
1.布尔值__boolean 2.数字__number----除了支持十进制和十六进制字面量,Typescript还支持ECMAScript 2015中引入的二进制和八进制字面量. 3.字符串__st ...
- JavaScript 和 TypeScript 交叉口 —— 类型定义文件(*.d.ts)
在 <从 JavaScript 到 TypeScript 系列> 文章我们已经学习了 TypeScript 相关的知识. TypeScript 的核心在于静态类型,我们在编写 TS 的时候 ...
随机推荐
- ssms导入excel数据提示未安装插件的解决方法
今天用ssms导入excel的时候,提示 然后去找了一下解决方案,安装了相对应的插件.但是还是会提示这个问题. 又去找了一下原因,找到一个原因是sqlserver启动的时候是32位的,但是导入需要64 ...
- JAVA 实体类List<Entity >转 List<Map>
public static <T extends IdEntity> List<Map<Object,Object>> EntityConvertMap(List& ...
- JDK下载地址 Oracle JDK下载 地址 (已解决)
现在JDK开始收费了 Oracle官方对JDK的管理也变得严格了,现在想要在官网下载jdk需要先注册Oracle账号,这倒是小事但是网页反应慢注册填写内容复杂导致很多人不想注册. 不过有的人提供了公开 ...
- JavaWeb代码复用
servlet部分,可能用得到的复用的代码: 1.dopost设置字符 request.setCharacterEncoding("utf-8"); response.setCha ...
- 如何实现Application event,观察者模式
spring 事件为bean 与 bean之间传递消息.一个bean处理完了希望其余一个接着处理.这时我们就需要其余的一个bean监听当前bean所发送的事件. spring事件使用步骤如下: 1.先 ...
- java.util.Collections
p.p1 { margin: 0; font: 11px Monaco } span.s1 { text-decoration: underline } span.s2 { color: rgba(1 ...
- Salesforce 大数据量处理篇(一)Skinny Table
本篇参考:https://developer.salesforce.com/docs/atlas.en-us.salesforce_large_data_volumes_bp.meta/salesfo ...
- 如何根据不同业务场景调节 HPA 扩缩容灵敏度
背景 在 K8s 1.18 之前,HPA 扩容是无法调整灵敏度的: 对于缩容,由 kube-controller-manager 的 --horizontal-pod-autoscaler-downs ...
- AI算法测评事项
前言 注:大概2017年-2018年国内人工智能热度达到顶峰,随后热度开始逐渐减少.2018年前人工智能被投资界.学术界.工业界和媒体炒的特别热,各大企业都想尝试一下深度学习技术在业务场景的应用.试水 ...
- C#扫盲篇(一):反射机制--情真意切的说
在一线编码已有多年,积累了不少非常实用的技能,最近的更新会逐步的分享出来,希望能帮助到还有一丢丢喜欢.Net的朋友,当然这些都比较适合入门选手,虽然自己已是个精通抄代码的老猿,但技术造诣仍是渣渣. 犹 ...