六、TypeScript函数新特性
程序员文章站
2023-12-26 15:32:21
...
1、rest和spread操作符
声明任意数量的方法参数
//使用...args声明任意数量的参数
function test(...args) {
//args本质是一个数组
args.forEach(
function (arg) {
console.log(arg);
}
)
}
//调用
test(1,2,3,4);
function test(a,b,c) {
console.log(a);
console.log(b);
console.log(c);
}
//调用
var args = [1, 2];
test(...args);
var args2 = [3, 4,5,6,7];
test(...args2);
2、generate函数
控制函数执行过程,手工恢复和暂停代码执行。
//使用function*声明一个generate函数
function* doSomething() {
console.log("start===========");
//相当于断点
yield;
console.log("end===========");
}
var func = doSomething();
//跳过当前断点,相当于debug功能
func.next();
func.next();
//使用function*声明一个generate函数
function* getStockPrice(stock) {
while (true) {
yield Math.random()* 100;
}
}
var pricerGenerate = getStockPrice("stock");
var price = 100;
var limitPrice = 15;
while (price>limitPrice) {
price = pricerGenerate.next().value;
console.log(`the generate return ${price}`);
}
console.log(`buying at ${price}`);
3、析构表达式
通过表达式将对象或数组拆解成任意数量的变量。
//析构表达式取出函数值
function getStock() {
return {
code: "IBM",
price:100
}
}
//返回结果直接使用多个变量接收
var { code, price } = getStock();
console.log(code);
console.log(price);
//析构表达式取出对象里面的值
function getStock() {
return {
code: "IBM",
price: {
price1: 100,
price2:200
},
aaa: "xixi",
bbb:"haha"
}
}
//针对对象的析构表达式使用大括号声明
var { code, price: {price2} } = getStock();
console.log(code);
console.log(price2);
//析构表达式与数组
var array = [1, 2, 3, 4, 5];
var [n1, n2, n3, n4, n5] = array;
console.log(n1);
console.log(n2);
console.log(n3);
console.log(n4);
console.log(n5);
//析构表达式和rest表达式
var [n1, n2, n3, ...others] = array;
console.log(others);