TypeScript学习(二):任意类型及推论
上文我们提到typescript(以下统称为“TS”)中原始数据类型的一些声明方式,不难看出,TS中的数据定义方式跟JS是大同小异的,但是在JS中,我们常常会声明一个变量,如:
var a; // 声明变量a
此时,我们在后台打印a的值是undefined,因为我们定义了变量a,但是没有赋值,在声明之后,我们可以随意给变量a赋值,例如:
a = 1; 或者 a = 'string'; 或者 a = true;
在TS中,为了便于我们开发,我们同样可以这样声明变量,然后给它赋任意类型的值,这样也便于我们开发,格式如下:
let a; a = 1; // 第一种方式:声明时不指定任意数据类型,随后赋值任意类型
let a : any = 1; a = 'string'; // 第二种方式:指定类型为any,也可赋值任意类型
到这里,我们在开发中常用的几种数据定义方式也就介绍完毕。
有的童鞋会问,在TS中定义数据还要标注类型,这样不是很繁琐,下面我们就来说一下在TS中,有一种叫做数据类型推论的特性,类似于JS中的typeof()的方式,如下:
let a = 1; // 我们定义变量a的值为1,此时值1为数值类型
我们在上面定义变量a的值为1,接下来我们直接给赋另一种类型的值:
a = 'string'; // 随后再定义变量a的值为字符串类型'string'
这个时候我们编译ts文件时会发现,编译报错:"index.ts(2,1): error TS2322: Type 'string' is not assignable to type 'number'.",根据报错我们可以发现,在第一次定义变量a为数值1时,TS中自动将变量a的类型定义为数值类型,所以我们在后面再定义为其它类型时,TS时不能正常编译的。
所以我们得出结论,TS在编译过程中,会自动给为定义的变量默认加上一个类型属性,这个就是TS中的数据类型推论,而且是以最先赋值的数据类型为准(let a;定义方式除外,此定义方式为任意数据类型定义)。
到底啦!!!!
TypeScript学习(二):任意类型及推论相关推荐
- typeScript复杂数据类型--任意类型、类型推论、联合类型、对象的类型(接口)、数组的类型、函数的类型
目录 1.任意值 什么是任意值类型 未声明类型的变量 2.类型推论 3. 联合类型 访问联合类型的属性或方法 4.对象的类型--接口 什么是接口 可选属性 任意属性 只读属性 1.任意值 任意值(An ...
- TypeScript学习(三):联合类型及推论
前面说到了typescript中的数据类型的定义及类型推论,定义的方式也就是单数据类型定义或者是任意类型的定义,但是我们在开发中,有时候会涉及到一些变量的值类型校验,例如只需要数值和字符串,或者数值和 ...
- Typescript学习笔记(二)
泛型 在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据. 这样用户就可以以自己的数据类型来使用组件. 我们需要一种方法使返回值的类型与传入参数的类型是相同 ...
- 第七节:在 TypeScript 中什么是类型推论?
上一节,我们学习了TypeScript中的一种新的数据类型:元组Tuple.没学习上一节的同学可以戳:<又一种新的数据类型:元组Tuple> 这一节,我们一起来学习一下TypeScript ...
- TypeScript学习(七):类型断言
前面我们提到了值类型,在我们设置值类型的时候,有一种定义方式就是联合类型的设定,如下: let a: number | string; a = 1; // 类型推论:此时变量a为number类型 a ...
- typescript学习笔记1-tsconfig.json配置和变量类型声明
一,tsconfig.json {// 编译器选项"compilerOptions": {/* 基本选项 */"target": "es5" ...
- 学习TypeScrip2(任意类型)
Any 类型 和 unknown 顶级类型 nodejs 环境执行ts npm i @types/node --save-dev (node环境支持的依赖必装) npm i ts-node --g 1 ...
- C++11/14学习(二)类型推导
C++11/14学习(二)类型推导 C++11 引入了 auto 和 decltype 这两个关键字实现了类型推导,让编译器来操心变量的类型. 这使得 C++ 也具有了和其他现代编程语言一样,某种意义 ...
- typescript设置只读属性和任意类型
对象中的一些字段只能在创建的时候被赋值,那么可以用 readonly 定义只读属性 interface Zerb {readonly id: numbername: stringage?: numbe ...
最新文章
- syslog介绍-CS架构来采集系统日志
- 多返回值函数的编写方法
- android源码下载方式
- 神经网络 | Hopfield神经网络(附python源代码)
- mysql 5.8_mysql5.8安装指南
- 联想Z5手机夺得京东销量第一,联想这是要翻盘的节奏吗?
- 请问运行py文件的时候怎么样可以不让那个黑框一闪...
- 从前序与中序遍历序列构造二叉树
- python pexpect模块详解_python pexpect模块
- 华为云大数据轻模式体验:忘掉底层烦恼,专注数据开发
- edui 富文本编辑_React中使用UEditor百度富文本的方法
- 登顶 GitHub 趋势榜,标星1.8k:200 行 JS 代码让画面人物瞬间消失!
- Unit1 Homework
- 手机修改html离线网页内容,HTML5--离线web应用
- Flex应用性能优化
- win7 thinkpad 屏幕旋转 快捷键 与 eclipse冲突
- java list 时间排序_Java collections.sort()根据时间排序list
- Scipy总结(constants)
- 逃出你的肖申克(二):仁者见仁智者见智?从视觉错觉到偏见
- 对比MIUI7和Flyme4.5 期待神秘的Flyme5
热门文章
- CentOS7下安装 mysql5.7.25(glibc版)(可用)
- iscsi多路径配置方式
- Nginx 限制某 IP 在一段时间内对服务器发起请求的连接数
- 常见Windows硬件故障
- Linux 命令 之 【stat】 查看文件状态。 (包括修改时间)
- 【PostgreSQL-9.6.3】触发器实例
- IntelliJ IDEA 中使用 Lambok (注解无效问题的解决)
- 【VUE】vue在vue-cli3环境下基于axios解决跨域问题
- eclipse 中提示tomcat 的端口被占用了 后的最快捷解决方法
- windows连接远程服务器报错‘SSH‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件 解决方案