TypeScript 变量声明

布满荆棘的人生 2022-06-13 00:13 454阅读 0赞

一、变量声明

let和const是JavaScript里相对比较新的变量声明方式。推荐使用let 方式声明变量,来代替使用var。

TypeScript是JavaScript 的超集,所以它本身就支持let、const,同时还有var。

let 方式声明解决了var方式的弊端,同时扩展了解构、展开等特别实用的功能。

二、let声明变量

1.在TypeScript中语法要求变量在没有声明前不能使用。这个其他强类型语言一样,变量先声明,再使用,避免变量的乱用或混用等冲突。

  1. a++; // 编译不通过
  2. let a;

2.块作用域

当用let声明一个变量,它使用的是词法作用域或块作用域。 不同于使用 var声明的变量那样可以在包含它们的函数外访问,块作用域变量在包含它们的块或for循环之外是不能访问的。

  1. function f(input:boolean){
  2. let a=100;
  3. if(input){
  4. let b=a+1;
  5. return b;
  6. }
  7. return b; //作用于使用大括号区分,所以此处不能访问b
  8. }

3.重定义及屏蔽

注:使用var声明变量可以重定义,但是在TypeScript中使用let编译不通过。

  1. let x = 10;
  2. let x = 20; // 错误,不能在1个作用域里多次声明`x`

对于函数变量,可以重定义

  1. //函数作用域变量和块级作用域变量可以相同
  2. function f(condition, x) {
  3. if (condition) {
  4. let x = 100;
  5. return x;
  6. }
  7. return x;
  8. }

4.块级作用域变量定的获取

let声明出现在循环体里时拥有完全不同的行为。 不仅是在循环里引入了一个新的变量环境,而是针对 每次迭代都会创建这样一个新作用域。 这就是我们在使用立即执行的函数表达式时做的事,所以在 setTimeout例子里我们仅使用let声明就可以了。

  1. for (let i = 0; i < 10 ; i++) {
  2. setTimeout(function() {console.log(i); }, 100 * i);
  3. }

属于结果预料一直。

三、let 解构,并声明变量

1.解构数组

  1. //let 解构数组
  2. let input = [1, 2];
  3. let [first, second] = input;
  4. console.info(input);
  5. console.log(first);
  6. console.log(second);

结构数组是,可以忽略不关心的尾随元素。

  1. //批量定义变量
  2. let [one]=[1,2,3,4,'张三丰']
  3. console.log(one);

2.解构对象

  1. //使用let 对象结构
  2. let o = {
  3. a: 'foo',
  4. b: 12,
  5. e: 'bar'
  6. }
  7. //结构对象中的值,声明变量
  8. let {a,b}=o;
  9. console.log(a);
  10. console.log(b);

部分解构,使用… 语法创建剩余变量:

  1. //你可以在对象里使用...语法创建剩余变量
  2. let {a,...passthrough}=o;
  3. console.info(passthrough.b);
  4. console.info(passthrough.e);

解构时,重命名属性

  1. //属性重命名
  2. let { a: name1, b: age } = o;
  3. console.log(name1);
  4. console.log(age);

解构时,指定默认值

  1. //指定默认值
  2. function testFun(wholeObject: { a: string, b?: number }) {
  3. let { a, b = 1001 } = wholeObject;
  4. console.log(a);
  5. console.log(b);
  6. }
  7. testFun({ a: '张三丰' });

四、let 展开

展开操作与解构相反。

展开对象时,继承对象的属性,现在也包括了函数。

1.将一个数组展开为另一个数组

  1. //数组展开
  2. let first = [1, 2];
  3. let second = [3, 4];
  4. let bothPlus = [0, ...first, ...second, 5];
  5. console.info(bothPlus);

2.对象展开

  1. //对象展开
  2. let defaults = {
  3. name: '张三丰',
  4. age: 108,
  5. showInfo: function () {
  6. console.info('showInfo');
  7. }
  8. };
  9. let person = { ...defaults, food: 'spicy' };
  10. console.info(person);
  11. //对象展开中,目前v2.3版已经支持
  12. person.showInfo();

更多:

TypeScript开发环境搭建-Visual Studio Code

TypeScript 简介整理

发表评论

表情:
评论列表 (有 0 条评论,454人围观)

还没有评论,来说两句吧...

相关阅读