【记录】TS

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值