let isOrNot: boolean = true; //布尔类型
let imnumber: number = 123; //number类型
let imString: string = "123"; // string类型
//void类型
function imViodTypeFunc(): void {
alert("Yes");
}
//null 和 undefind
let imNull: null = null;
let imUndefind: undefined = undefined;
/** null和undefined是所有类型的子类型 (需ts严格模式关闭)*/
// let imNum: number = undefined;
//任意值
/**
* 普通类型,在运行中改变类型是不允许的;any类型可以改变类型
* 声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值
* */
//类型推断
let imTry = "123";
// imTry = 456; // 无法执行,因为imTry被推断为字符串
/**
* 如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查
* */
let imAny;
imAny = "123";
imAny = 456;
//联合类型
let unit: string | number;
unit = 7;
unit = "string";
/** 当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法: */
//对象的类型:接口
/**
* 使用包括确定属性、可选属性、添加任意属性、只读属性
*/
interface IPerson {
readonly name: string;
age?: number;
[propName: string]: string | number | undefined;
}
let tom: IPerson = {
// age: 10,
name: "小明",
dododod: "false",
};
//数组类型
//1.「类型 + 方括号」表示法
let fibonacci: number[] = [1, 1, 2, 3, 5, 8];
//2.数组泛型表示法
let fibonacciCopy: Array<number> = [1, 1, 2, 3, 5, 8];
//描述数组
interface Iimarray {
[index: number]: number;
}
/**
* 虽然接口也可以用来描述数组,但是我们一般不会这么做,因为这种方式比前两种方式复杂多了。不过有一种情况例外,那就是它常用来表示类数组。
*/
//函数的类型 函数表达式
let mySum: (x: number, y: number) => number = function (
x: number,
y: number
): number {
return x + y;
};
//用接口也能定义函数的形状
interface mySumFunc {
(x: number, y: number): boolean;
}
let mySumFunc: mySumFunc;
mySumFunc = function (x, y) {
return x == y;
};
//剩余参数
function restParams(params: any[], rest: any[]) {
return [params, rest];
}
//重载
function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: number | string): number | string | void {
if (typeof x === "number") {
return Number(x.toString().split("").reverse().join(""));
} else if (typeof x === "string") {
return x.split("").reverse().join("");
}
}
//类型断言
/**
* 语法 值 as 类型 或 <类型>值
*/
//书写声明文件
//内置对象
/**
* ECMAScript标准内置对象: Boolean、Error、Date、RegExp
* DOM 和 BOM 的内置对象:Document、HTMLElement、Event、NodeList
*/
//类型别名
//元祖
let tuple: [number, string] = [123, "dodo"];
//泛型
/**
* 泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
*/
interface Ifunc {
(x: string, y: string): undefined;
}
function genericsFunc<T extends IPerson>(params: T): T {
return params;
}
genericsFunc({ name: "json" });
//泛型接口
//写法1
interface IgenericsInterface {
<T>(x: number, y: T): undefined;
}
//写法2
interface IgenericsInterfaceT<T> {
(x: number, y: T): undefined;
}
【记录】TS
最新推荐文章于 2024-09-04 20:18:34 发布