上文我们提到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学习(二):任意类型及推论相关推荐

  1. typeScript复杂数据类型--任意类型、类型推论、联合类型、对象的类型(接口)、数组的类型、函数的类型

    目录 1.任意值 什么是任意值类型 未声明类型的变量 2.类型推论 3. 联合类型 访问联合类型的属性或方法 4.对象的类型--接口 什么是接口 可选属性 任意属性 只读属性 1.任意值 任意值(An ...

  2. TypeScript学习(三):联合类型及推论

    前面说到了typescript中的数据类型的定义及类型推论,定义的方式也就是单数据类型定义或者是任意类型的定义,但是我们在开发中,有时候会涉及到一些变量的值类型校验,例如只需要数值和字符串,或者数值和 ...

  3. Typescript学习笔记(二)

    泛型 在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据. 这样用户就可以以自己的数据类型来使用组件. 我们需要一种方法使返回值的类型与传入参数的类型是相同 ...

  4. 第七节:在 TypeScript 中什么是类型推论?

    上一节,我们学习了TypeScript中的一种新的数据类型:元组Tuple.没学习上一节的同学可以戳:<又一种新的数据类型:元组Tuple> 这一节,我们一起来学习一下TypeScript ...

  5. TypeScript学习(七):类型断言

    前面我们提到了值类型,在我们设置值类型的时候,有一种定义方式就是联合类型的设定,如下: let a: number | string; a = 1; // 类型推论:此时变量a为number类型 a ...

  6. typescript学习笔记1-tsconfig.json配置和变量类型声明

    一,tsconfig.json {// 编译器选项"compilerOptions": {/* 基本选项 */"target": "es5" ...

  7. 学习TypeScrip2(任意类型)

    Any 类型 和 unknown 顶级类型 nodejs 环境执行ts npm i @types/node --save-dev (node环境支持的依赖必装) npm i ts-node --g 1 ...

  8. C++11/14学习(二)类型推导

    C++11/14学习(二)类型推导 C++11 引入了 auto 和 decltype 这两个关键字实现了类型推导,让编译器来操心变量的类型. 这使得 C++ 也具有了和其他现代编程语言一样,某种意义 ...

  9. typescript设置只读属性和任意类型

    对象中的一些字段只能在创建的时候被赋值,那么可以用 readonly 定义只读属性 interface Zerb {readonly id: numbername: stringage?: numbe ...

最新文章

  1. syslog介绍-CS架构来采集系统日志
  2. 多返回值函数的编写方法
  3. android源码下载方式
  4. 神经网络 | Hopfield神经网络(附python源代码)
  5. mysql 5.8_mysql5.8安装指南
  6. 联想Z5手机夺得京东销量第一,联想这是要翻盘的节奏吗?
  7. 请问运行py文件的时候怎么样可以不让那个黑框一闪...
  8. 从前序与中序遍历序列构造二叉树
  9. python pexpect模块详解_python pexpect模块
  10. 华为云大数据轻模式体验:忘掉底层烦恼,专注数据开发
  11. edui 富文本编辑_React中使用UEditor百度富文本的方法
  12. 登顶 GitHub 趋势榜,标星1.8k:200 行 JS 代码让画面人物瞬间消失!
  13. Unit1 Homework
  14. 手机修改html离线网页内容,HTML5--离线web应用
  15. Flex应用性能优化
  16. win7 thinkpad 屏幕旋转 快捷键 与 eclipse冲突
  17. java list 时间排序_Java collections.sort()根据时间排序list
  18. Scipy总结(constants)
  19. 逃出你的肖申克(二):仁者见仁智者见智?从视觉错觉到偏见
  20. 对比MIUI7和Flyme4.5 期待神秘的Flyme5

热门文章

  1. CentOS7下安装 mysql5.7.25(glibc版)(可用)
  2. iscsi多路径配置方式
  3. Nginx 限制某 IP 在一段时间内对服务器发起请求的连接数
  4. 常见Windows硬件故障
  5. Linux 命令 之 【stat】 查看文件状态。 (包括修改时间)
  6. 【PostgreSQL-9.6.3】触发器实例
  7. IntelliJ IDEA 中使用 Lambok (注解无效问题的解决)
  8. 【VUE】vue在vue-cli3环境下基于axios解决跨域问题
  9. eclipse 中提示tomcat 的端口被占用了 后的最快捷解决方法
  10. windows连接远程服务器报错‘SSH‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件 解决方案