欢迎大家来到IT世界,在知识的湖畔探索吧!
ArkTS-Enum&Union&Aliases类型
- 官方资料: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/introduction-to-arkts-V5
Enum
enum类型,又称枚举类型,是预先定义的一组命名值的值类型,其中命名值又称为枚举常量。
- 使用枚举常量时必须以枚举类型名称为前缀。
enum ColorSet { Red, Green, Blue } let c: ColorSet = ColorSet.Red;
欢迎大家来到IT世界,在知识的湖畔探索吧!
在这个例子中,Color 是一个枚举类型,它包含三个成员:Red、Green 和 Blue。默认情况下,枚举成员的值从 0 开始递增。所以,Color.Red 的值为 0,Color.Green 的值为 1,Color.Blue 的值为 2。
- 常量表达式可以用于显式设置枚举常量的值。
欢迎大家来到IT世界,在知识的湖畔探索吧!enum ColorSet { White = 0xFF, Grey = 0x7F, Black = 0x00 } let c: ColorSet = ColorSet.Black;
- 案例:使用枚举表示状态
enum OrderStatus { Placed, Shipped, Delivered, } function checkOrderStatus(status: OrderStatus) { switch (status) { case OrderStatus.Placed: console.log('Order has been placed.'); break; case OrderStatus.Shipped: console.log('Order has been shipped.'); break; case OrderStatus.Delivered: console.log('Order has been delivered.'); break; } } const status = OrderStatus.Shipped; checkOrderStatus(status);
Union类型
- union类型,即联合类型,是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型。
欢迎大家来到IT世界,在知识的湖畔探索吧!class Cat { // ... } class Dog { // ... } class Frog { // ... } type Animal = Cat | Dog | Frog | number // Cat、Dog、Frog是一些类型(类或接口) let animal: Animal = new Cat(); animal = new Frog(); animal = 42; // 可以将类型为联合类型的变量赋值为任何组成类型的有效值
- 可以用不同的机制获取联合类型中特定类型的值。
class Cat { sleep () {}; meow () {} } class Dog { sleep () {}; bark () {} } class Frog { sleep () {}; leap () {} } type Animal = Cat | Dog | Frog function foo(animal: Animal) { if (animal instanceof Frog) { animal.leap(); // animal在这里是Frog类型 } animal.sleep(); // Animal具有sleep方法 }
Aliases类型
- Aliases类型为匿名类型(数组、函数、对象字面量或联合类型)提供名称,或为已有类型提供替代名称。
欢迎大家来到IT世界,在知识的湖畔探索吧!type Matrix = number[][]; type Handler = (s: string, no: number) => string; type Predicate <T> = (x: T) => boolean; type NullableObject = Object | null;
- 使用 type 关键字来创建类型别名
type MyNumber = number; type MyString = string;
- 作用
欢迎大家来到IT世界,在知识的湖畔探索吧!1 提高可读性: 当一个类型在代码中多次出现时,使用类型别名可以使代码更易于理解。例如,如果有一个复杂的数据结构,使用类型别名可以让代码更清晰地表达其含义。 2 简化复杂类型: 对于复杂的类型表达式,可以使用类型别名来简化它们。例如,如果有一个包含多个属性的对象类型,可以使用类型别名来定义这个类型,然后在代码中使用别名来代替复杂的类型表达式。 3 方便维护: 如果一个类型在多个地方使用,并且需要修改这个类型,只需要修改类型别名的定义即可,而不需要在每个使用该类型的地方进行修改。
- 简化函数类型
type MathOperation = (a: number, b: number) => number; const add: MathOperation = (a, b) => a + b; const subtract: MathOperation = (a, b) => a - b;
这里,MathOperation 是一个函数类型的别名,代表接受两个数字参数并返回一个数字的函数。使用这个别名可以使代码更清晰地表达数学运算函数的类型。
- 结合泛型使用
欢迎大家来到IT世界,在知识的湖畔探索吧!type List<T> = Array<T>; const numbersList: List<number> = [1, 2, 3]; const stringsList: List<string> = ['a', 'b', 'c'];
在这个案例中,List 是一个泛型类型别名,代表一个数组类型。使用这个别名可以使代码更清晰地表达一个列表的类型,并且可以方便地用于不同类型的列表。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/94659.html