ts扩展类型

简介: 接口 interface 含义:是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员

ts扩展类型


枚举


扩展类型:类型别名、枚举、接口、类


枚举通常用于约束某个变量的取值范围。


字面量和联合类型配合使用,也可以达到同样的目标。


字面量类型的问题


  • 在类型约束位置,会产生重复代码。可以使用类型别名解决该问题。
  • 逻辑含义和真实的值产生了混淆,会导致当修改真实值的时候,产生大量的修改。


// 定义一个类型别名
type Sex = "男"|"女"
// ... 此处有1w行代码,用到了男女这个
sex = "男" 等
// 当有一天,产品过来说,把男改成帅哥,女改成美女,我们可以cv进行操作
// 又过了一天,产品说把帅哥改成male,美女改成female
...
// 这样下去,我们的时间浪费在没有意义的地方上
// 不管是帅哥,还是male,他的逻辑意义都是男,w我们在代码中的使用了真实含义,这样会引起一些问题


  • 字面量类型不会进入到编译结果。也就是说,如果我们要在编译后面使用这个类型,是会存在一些问题的。


20210111102108489.png


枚举


如何定义一个枚举:


enum 枚举名{
    枚举字段1 = 值1,
    枚举字段2 = 值2,
    ...
}


枚举会出现在编译结果中,编译结果中表现为对象。表现的是一个对象。


20210111102530437.png


枚举的规则:


  • 枚举的字段值可以是字符串或数字
  • 数字枚举的值会自动自增
  • 被数字枚举约束的变量,可以直接赋值为数字
  • 数字枚举的编译结果 和 字符串枚举有差异


2021011110290215.png

20210111103227898.png


最佳实践:


  • 尽量不要在一个枚举中既出现字符串字段,又出现数字字段
  • 使用枚举时,尽量使用枚举字段的名称,而不使用真实的值


接口 interface


含义:是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员


typescript接口作用: 用于约束类、对象、函数的契约(标准)


语法:


类似于声明枚举enum, 类型别名 type 一样,使用 interface开头进行声明,interface xx(接口的名字){xxx:type}


// 声明一个对象的接口
interface User {
  name: String,
  age: number
}
// 声明一个函数的接口
interface Greet{
  sayHello: () => void,
  sayHi(): void
}


看到这个约束对象,我门可能会想,type 类型别名也可以用来约束对象,那么类型对象和interface的异同是啥?


interface 与 type 的异同


由于篇幅太长,在另一篇文章中 传送门


未完待续

相关文章
|
26天前
|
JavaScript
|
10月前
|
JavaScript 前端开发
ts -函数的类型
在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expression)
|
10月前
|
JavaScript Java
ts - 接口
在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。
|
11月前
|
JavaScript 前端开发
TS基础用法
TS基础用法
70 0
|
11月前
|
JavaScript 编译器 开发者
ts的接口是什么有什么作用
ts的接口是什么有什么作用
309 0
|
12月前
|
JavaScript 索引
TS接口
TypeScript 中的接口是一种抽象结构,用于定义对象的类型。接口定义了对象应该包含的属性和方法,但不提供实现。
|
JavaScript
【TS】ts的使用和类型注解
【TS】ts的使用和类型注解
110 0
【TS】函数和函数类型
【TS】函数和函数类型
59 0
ts重点学习131-ts中的命名空间
ts重点学习131-ts中的命名空间
67 0
ts重点学习131-ts中的命名空间