// 原始类型:
let a: number | string | boolean | null | undefined | symbol = 1;
let s: symbol = Symbol();
// 对象类型:
let b: object = {};
// 数组类型:
let numbers: number[] = [1, 2, 3];
let aa: string[] = ["1", "2", "3"];
let strings: Array = ["a", "b"];
// 联合类型:
let arr: (number | string)[] = [1, "2", "a", 3];
// 自定义类型,类型别名:
type myArray = (number | string)[];
let newArr: myArray = [1, "2", "a", 3];
// 函数类型:
function add(num1: number, num2: number): number {
return num1 + num2;
}
const add1 = (num1: number, num2: number): number => {
return num1 + num2;
};
// 函数返回值类型void:
function greet(name: string): void {
console.log(name);
}
// 可选参数,可选参数必须在必选参数之后
function mySlice(start?: number, end?: number): void {
console.log(start, end);
}
// 对象类型
let person: { name: string; age: number; sayHi(name: string): void } = {
name: "jack",
age: 19,
sayHi(name) {},
};
function myAxios(config: { url: string; methos?: string }) {}
myAxios({
url: "",
});
// 接口,描述对象类型,复用(没有=)
// 接口只能为对象指定类型;类型别名可以为任意类型指定别名(=号别忘了,相当于赋值)
interface Person {
name: string;
age: number;
sayHi(): void;
}
type Iperson = {
name: string;
age: number;
sayHi(): void;
};
let person1: Person = {
name: "wyb",
age: 24,
sayHi() {},
};
let person2: Iperson = {
name: "wyb",
age: 24,
sayHi() {},
};
// 接口继承
interface P1D {
x: number;
}
interface P2D extends P1D {
y: number;
}
// 元组类型:和数组比确切知道多少元素(Tuple,数组的特例,明确知道元素个数)
let position: number[] = [1, 2, 3, 4, 5];
let position2: [number, number?] = [1];
// 类型推断:自动推断类型(1、生命变量并初始化时; 2、函数返回值)
// 能省则省,充分利用TS类型推断能力,提升开发效率
function add11(num1: number, num2: string) {
return num1 + num2;
}
// 类型断言:使用as,指定更加具体的类型