ts枚举可以继承吗?

enum nba{
    kobe,
    tracy,
    allen,    
}

有一个枚举,现在想在这个枚举的基础上扩展,能继承吗?

enum lanqiu extends nba{
    yao,
    yi
}
阅读 5.6k
2 个回答

方法一:

使用枚举同名是在合并

enum Color {
  Red,
  Green,
  Blue
}
enum Color {
  Yellow = 3,
  Purple
}

注意:

  1. 枚举类型成员不能重名,成员值可以相同

方法二:

使用 declare 关键字,是在扩展一个已有的枚举类型

enum Color {
  Red,
  Green,
  Blue
}
declare enum Color {
  Yellow = 3,
  Purple
}
Color.Red // 0
Color.Yellow // 3

注意:

  1. 必须为新的成员显示指定指定一个值,不能使用默认
  2. 扩展枚举类型只能在全局作用域中使用,不能在模块中使用
  3. 扩展枚举类型只能添加新的成员,不能修改已有成员的值或名称

试试这个方法

enum Nba {
    Kobe,
    Tracy,
    Allen
}

enum Lanqiu {
    Yao = Nba.Allen + 1,
    Yi
}

// 使用扩展后的枚举
console.log(Lanqiu.Yao); // 3
console.log(Lanqiu.Yi); // 4

如果是字符串的话:

enum Nba {
    Kobe = 'kobe',
    Tracy = 'tracy',
    Allen = 'allen'
}

enum Lanqiu {
    Yao = 'yao',
    Yi = 'yi'
}

const MergedLanqiu = { ...Nba, ...Lanqiu };

// 使用扩展后的对象
console.log(MergedLanqiu.Kobe); // 'kobe'
console.log(MergedLanqiu.Yao); // 'yao'
推荐问题
logo
Microsoft
子站问答
访问
宣传栏