关于变量
带类型的普通变量
let dec: number = 123; //定义变量类型
带数据类型的数组
let aList:number[] = [1,2,3]; //定义带类型的数组
数组泛型
let blist: Array<number> = [1, 2, 3]; //数组泛型
元组 元组赋值
let x: [string, number]; //元组
x = ["hello", 10]; //元组赋值
console.log(x[0]);
枚举 获取枚举中的值 获取枚举index对应的名字
enum Color { Red = 2, Green = 1, Blue = 0 } //枚举 //枚举手动赋值
let c: Color = Color.Green; //获取枚举中名字的index
let b: Color = Color.Red;
console.log(c) //1
console.log(b) //0
let str: string = Color[2]; //获取枚举中的index的名字
console.log(str); //Red
动态类型 any (变量的类型可以不明确定义)
let notSure: any = 4; //any 动态类型
notSure = "123";
notSure = false;
关于函数
void 类型的函数 无返回值
function pp(): void { //void 无返回值的函数
console.log("456")
}
let uu: void = undefined; //void类型的变量只能赋值 underfined 和null
never 类型的函数 永远不会到达终点的函数
function error(message: string): never { //never类型表示那些不会到达终点的函数
throw new Error(message)
}
关于类型断言
自己确定是这种数据类型
let someValue: any = "123456789";
let strLength: number = (<string>someValue).length; //<string>类型断言 自己确定是这种数据类型
console.log(strLength)
let strLength2: number = (someValue as string).length; //使用as也是类型断言
关于解构
数组解构
let input = [1, 2, 3]; //数组解构
let [first, second] = input;
console.log(first); //1
解构赋值
let [f] = [1, 2, 3, 4, 5]; //解构赋值
console.log(f); //1
对象解构
let o = {
aa: "foo",
bb: 12,
cc: "bar",
dd: "11",
ee: true
};
let { aa, bb } = o; //对象解构
console.log(aa)
带指定类型的对象解构
let o = {
aa: "foo",
bb: 12,
cc: "bar",
dd: "11",
ee: true
};
let { aa, bb }: { aa: string, bb: number } = o; //带指定类型的对象解构
console.log(aa)
解构后属性重命名
let o = {
aa: "foo",
bb: 12,
cc: "bar",
dd: "11",
ee: true
};
let { cc: newName1 } = o;//属性重命名
console.log(newName1)
关于展开
数组展开
let f1 = [1, 2];
let d1 = [3, 4];
let nnn = [0, ...f1, ...d1, 5]; //展开,数组展开
console.log(nnn) //0,1,2,3,4,5
对象展开
let de = { food: "ss", price: "pp" };
let ded = { food: "aa", ...de }; //展开,对象的展开,对象展开会覆盖掉对象键相同的对象值
console.log(ded) //{food:"ss",price:"pp"}
对象展开会覆盖掉对象键相同的对象值
let de = { food: "ss", price: "pp" };
let ded = { food: "aa", ...de }; //展开,对象的展开,对象展开会覆盖掉对象键相同的对象值
console.log(ded) //{food:"ss",price:"pp"}