TypeScript

前言

认识了 TypeScript 中的基础类型,接下来当然是变量声明的相关学习了。

声明多维数组

假如有这么一个声明:

  1. let arr3: number[][][];

想要知道 arr3 的具体类型,其分析步骤如下:

image-20220225151900823

可以看到,类型拆解是从右向左的,对应到具体变量值上就是从外向内一层层拆解的。

这里只是举个例子,稍微有点经验的人一眼就能判断出 arr3 是一个三维数组。但是,授人以鱼不如授人以渔,这个分析方法却适用于绝大多数复杂数据类型分析。

属性重命名

在有了 ES6 的解构赋值之后,我们可以这么声明变量:

  1. let personInfo1 = {
  2. name: "编程三昧",
  3. age:22
  4. }
  5. let {name: nameP, age: ageP} = personalInfo1;

如果在 TypeScript 中,要指定 nameP 和 ageP 的数据类型,需要这么写:

  1. let { name: nameP, age: ageP }: { name: string; age: number } = personInfo1;

其实这个类型指定可以放在对象声明中,指定对象每一项属性值的类型:

  1. let personInfo1: { name: string; age: number } = {
  2. name: "编程三昧",
  3. age: 22
  4. };
  5. personInfo1.name = 12; // Error 不能将类型“number”分配给类型“string”
  6. // let {name: nameP, age: ageP} = personInfo1;
  7. let { name: nameP, age: ageP } = personInfo1;
  8. nameP = 12; // Error 不能将类型“number”分配给类型“string”

let 和 const 的暂时性死区

以下代码在 TypeScript 中不会报错,但是在实际运行中会报错。

  1. function foo(): number {
  2. return a1;
  3. }
  4. foo();
  5. let a1: number = 12;

实际运行报错:

image-20220225144916570

我自己的理解是:静态编译时只负责检测数据类型是否正确,而动态运行时才会检测语法逻辑错误,恰好暂时性死区是在运行时才产生的。

总结

~

~ 本文完,感谢阅读!

~

学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!

大家好,我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢迎关注,希望大家多多指教!

更多相关文章

  1. Android常用mimetype类型
  2. Android(安卓)Intents and Intent Filters
  3. Android(安卓)中常用 MimeType 及对应文件类型
  4. PHP运行原理与变量类型
  5. 学习了php的赋值,声明,打印,输出,数组,关联数组,多维数组等,以及了解了p
  6. 初识php
  7. php的运行原理和变量类型
  8. php变量的8种类型. 遍历php多维数组(foreach与for) 一个函数完成购
  9. JavaScript 基本数据类型转换

随机推荐

  1. mysql中逗号分隔字段的更好替代方案
  2. Mysql--可用的 MySQL 产品和专业服务
  3. mysql5.6.23安装 步骤
  4. MySQL2 Ruby gem不会安装10.6
  5. Invalid property 'driver_class' of bea
  6. EntityFramework6连接MySql数据库 乱码问
  7. ubuntu_mysql怎么判断自己的库和头文件的
  8. Windows上不可读的字节码数据库tar.gz(Max
  9. mysql备份文件损坏的修复
  10. as4上安装apache,mysql,php,cacti,nagios