第03节、变量声明--typeScript

学过 ES6,都知道两个声明方式:letconst

因为时讲到 TypeScript 。这里还是要着重讲一下这两个变量声明。

let 声明

let 声明和我们常用的 var 声明很相似,当然也有一些不同。

let 声明变量只在块级作用域起作用,适合在for循环使用。也不会出现变量提升现象。同一个代码块内,不可重复声明相同的变量。不可重复声明函数内的参数。

举几个例子吧;
先说一下什么是块级作用域:

任何一对花括号( {} )中的语句都属于一个块,在花括号里面用let定义的所有变量在花括号外都是不可见的,我们称之为块级作用域。

var arr = [];
for(var i=0;i<10;i++){
    arr[i] = function(){
        return i;
    }
}
console.log(arr[0]); //10;
console.log(arr[8]); //10;

var job = [];
for(let j=0;j<10;j++){
    job[j] = function(){
        return j;
    }
}
console.log(job[0]); //0;
console.log(job[8]); //8;

const 声明

常量声明,就像它的名字所表达的,它们被赋值后不能再改变。

解构

结构数组

最简单的解构莫过于数组的解构赋值了:

let input = [1, 2];
let [first, second] = input;
console.log(first); //  1
console.log(second); //  2
对象解构

你也可以解构对象:

let o = {
    a: "foo",
    b: 12,
    c: "bar"
};
let { a, b } = o;

属性重命名

你也可以给属性以不同的名字:

let { a: newName1, b: newName2 } = o;

这里的语法开始变得混乱。 你可以将 a: newName1 读做 “a 作为 newName1“。 方向是从左到右,好像你写成了以下样子:

let newName1 = o.a;
let newName2 = o.b;

令人困惑的是,这里的冒号不是指示类型的。 如果你想指定它的类型, 仍然需要在其后写上完整的模式。

let {a, b}:{a: string, b:number} = o;

默认值

默认值可以让你在属性为 undefined 时使用缺省值:

function keepWholeObject(wholeObject: { a: string, b?: number }) {
    let { a, b = 1001 } = wholeObject;
}
函数声明

解构也能用于函数声明。 看以下简单的情况:

type C = {a:string, b?:number}
function f({a, b}: C): void{
    //...
}
展开

展开操作符正与解构相反。 它允许你将一个数组展开为另一个数组,或将一个对象展开为另一个对象。 例如:

let first = [1, 2];
let second = [3, 4];
let bothPlus = [0, ...first, ...second, 5];

这会令bothPlus的值为[0, 1, 2, 3, 4, 5]。 展开操作创建了 firstsecond的一份浅拷贝。 它们不会被展开操作所改变。

你还可以展开对象:

let defaults = { food: "spicy", price: "$$", ambiance: "noisy" };
let search = { ...defaults, food: "rich" };
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值