// 字符串:
// 使用单引号''和反引号``, 避免使用双引号""
// 反引号用${}插值
let a: string = 'foobar';
let b: string = `foo${a}bar`;
console.log(b);
// 数组解构;
let arr: Array<number> = [1, 2, 3, 4];
let [first, second] = arr;
console.log(1, first, second)
// 对象解构:
interface User {
firstName: string,
lastName: string
}
function getUserName(user: User): User {
let {firstName, lastName} = user;
// 当函数需要返回多个值的时候, 尽量使用对象形式的返回, 便于以后修改返回值的顺序以及添加新的返回内容
return {firstName, lastName};
}
console.log(2, getUserName({firstName: 'james', lastName: 'hellen'}));
// 单行对象声明最后一项不加逗号,
// 多行对象声明最后一行加逗号
let a: any = {
k1: 1,
k2: 2,
k3: 3,
}
let b: any = {k1: 1, k2: 2, k3: 3};
function getKey(): string {
console.log('get key out');
return 'key' + 9;
}
let id: number = 1;
// 对象属性名可以动态生成
// 对象属性和接受变量的名称一致时可以简写
let obj: any = {
id,
name: 'Shanghai',
[getKey()]: true
};
console.log(3, obj);
let obj1: any = {
id,
value: id,
getKey(key: string) {
return key;
},
[getKey()]() {
console.log('get key in');
}
};
console.log(4, obj1);
// 扩展运算符...
// 数组拷贝
let arr1: number[] = [1, 2, 3, 4];
let arrCopy: number[] = [...arr1];
console.log(5, arrCopy == arr1);
// 箭头函数
let arr2: number[] = [1, 2, 3, 4];
arr2.sort((a, b) => Math.random() - 0.5);
console.log(6, arr2);