深入浅出ts(3)

97 阅读2分钟

ts—interface

1、定义: 为了定义对象类型。例如 interface Person { name: String, age: Number } let tom: Person = { name: 'Tom', age: 25 };

2、特点: 可选属性:接口里的属性不全都是必需的。带有可选属性的接口与普通的接口定义差不多,只是在可选属性名字定义的后面加一个?符号。 可读属性:readonly 可以描述自定义属性 可以描述函数类型: interface AddFunc { (num1: number, num2: number): number; } 复制代码 总结:接口非常灵活。

ts_类

1、写法:与js差不多,增加了一些定义。 2、特点:

增加了private, public, protected修饰符 抽象类:1、只能被继承,不能被实例化。2、作为基类,抽象方法必须被子类实现。 interface约束类,使用implements关键字 三、ts进阶

高级类型

1、联合类型与交叉类型 联合类型:联合类型通过 | 符号连接多个类型从而生成新的类型。它主要是取多个类型的交集,即多个类型共有的类型才是联合类型最终的类型。联合类型可以是多个类型其中一个,可做选择。 交叉类型:交叉类型由一组有序的成员类型构成,交叉类型表示类型同时为多个类型,等同于运算符 &&,类似于数学运算中的乘法。交叉类型也是通过交叉类型字面量来定义的。 

2、类型断言

类型断言的主要作用是在你比 TypeScript 更清楚某个值的类型的情况下,手动指定一个值的类型。这样可以避免 TypeScript 编译器报错,同时也可以让你更好地利用 TypeScript 的类型系统。 类型断言是 TypeScript 中的一个概念,它允许你手动指定一个值的类型。类型断言有两种形式。一种是“尖括号”语法: let someValue: any = "this is a string"; let strLength: number = (someValue).length;

另一种是 as 语法: let someValue: any = "this is a string"; let strLength: number = (someValue as string).length; 两种形式是等价的。需要注意的是,在使用 JSX 时,只有 as 语法断言是被允许的。

3、类型别名(type vs interface)

二者都是给类型起别名。 相同点:都可以定义对象或函数,都允许继承

不同点: interface是用来定义对象,type用来定义别名方便使用。 type可以定义基本类型,interface不行。 interface可以合并重复声明,type不行

总结:interface是一个接口的概念,用来描述对象。type别名的概念,用来对各个别名定义。