类型
// 1.基本数据类型
let str: string = "hello world";
let num: number = 123;
let n: null = null;
let u: undefined = undefined;
// let sym: symbol = symbol("123");
let strArr: string[] = ["111", "123"];
// 2.引用数据类型
let numArr: Array<number> = [123, 123];
let obj_arr: object = [123, 123];
let obj_obj: object = { name: "猪猪侠" };
console.log(obj_arr, obj_obj);
function sum(num1: number, num2: number, num3?: number): number {
return num1 + num2;
}
sum(1, 2);
// 3.特殊类型
let any: any = ""; //任意类型
let unknow: unknown = ""; //描述类型不确定的变量 和any类型有点类似,但是unknown类型的值上做任何事情都是不合法的
//void通常用来指定一个函数是没有返回值的
function unHaveReturn(): void {
sum(1, 2);
}
const res = unHaveReturn(); //函数不能有返回值 只能是undefined
console.log(res);
// never 表示永远不会发生值的类型
function fun(): never {
// type 1
while (true) {
console.log("111");
}
// type 2
throw new Error();
}
// tuple是元组类型
let 元组类型: [number, string, boolean] = [1, "1", true];
let trueArr: (number | string)[] = [1, "1"];
let 联合类型: string | number = 1;
type 联合类型2 = "string" | "number" | "123" | 123;
// 如果是定义非对象类型,通常推荐使用type
type 类型别名 = {
num1: number;
str: string;
};
type 类型别名1 = 类型别名 | number | string | boolean;
// 声明一个对象类型
interface 接口声明 {
num1: number;
str: string;
}
// 交叉类型 -s
type stringType = {
name: string;
};
type funType = {
fun: () => void;
};
type 交叉类型 = stringType & funType;
const obj: 交叉类型 = {
name: "111",
fun: () => {},
};
// 交叉类型 -d
const 断言关键字 = "as";
const str断言: number = 断言关键字 as unknown as number; //需要先转---as unknown---再转其他
// console.log(str断言); //as
非空断言
函数类型
构造签名
可选参数,默认参数,剩余参数
function fun_(num1?: number, num2: number = 1, ...numbs) {}
类
索引类型
interface I索引类型 {
[index: `${string}a`]: string;
[index: string]: string;
}
const 索引类型: I索引类型 = {
ccca: "1",
aaa: "aaa",
};