ts 元祖/枚举05
元祖
1 2 3 4 5 6 7 8 | // 元祖 : 合并了不同类型的对象 let Tarr = [123, "123" ]; //这里要按位置去添加,第一个是number则数组第一个也要是number类型,string也是如此 // 添加内容的时候,只要是number和string类型就可以了,不能添加除了定义好的类型以外的类型 console.log(Tarr) Tarr.push( "123" ); console.log(Tarr) Tarr.push(999); console.log(Tarr) |
枚举
// 枚举类型
// 使用枚举给数组赋予名称
enum NumberType {
one = 2, //当第一个定义后,后面的数没定义时,会递增+1
two = 1,
three, //当这里递增为2时,会覆盖掉one,所以手动赋值时,尽量不要写重复的值
four
}
console.log(NumberType)
// 枚举日期案例
enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };
// 枚举项有两种类型:常数项和计算所得项
// 计算所得项
enum Color {
Red,
Green,
Blue = "blue".length, //当写了计算所得项后就不要写其他东西了,不然会拿不到任何值,除非下一个也是计算所得项,如下
green = 11
};
// 常数枚举是使用 const enum 定义的枚举类型
// 常数枚举与普通枚举的区别是,它会在编译阶段被删除,并且不能包含计算成员。
const enum Obj {
o,
b,
j = 10 + 10,
}
console.log(Obj.o)
console.log(Obj.b)
console.log(Obj.j) //常数枚举在编译阶段时,会直接打印console.log(20 /* Obj.j */);,会计算计算成员
// 外部枚举是使用 declare enum 定义的枚举类型
declare enum ABC { //declare 定义的类型只会用于编译时的检查,编译结果中会被删除
a, b, c= 10 + 10
}
console.log(ABC.a)
console.log(ABC.b)
console.log(ABC.c) //外部枚举在编译阶段时,会直接打印console.log(ABC.c);,不会编译计算结果
declare const enum AD { //declare 与const两者之间继续结合
a, b, c= 10 + 10
}
console.log(AD.a)//结合起来的枚举在编译阶段时,会直接打印console.log(0 /* AD.a */);,计算结果会变成0
上述枚举方法的编译
// 枚举类型
// 使用枚举给数组赋予名称
var NumberType;
(function (NumberType) {
NumberType[NumberType["one"] = 2] = "one";
NumberType[NumberType["two"] = 1] = "two";
NumberType[NumberType["three"] = 2] = "three";
NumberType[NumberType["four"] = 3] = "four";
})(NumberType || (NumberType = {}));
console.log(NumberType);
// 枚举日期案例
var Days;
(function (Days) {
Days[Days["Sun"] = 0] = "Sun";
Days[Days["Mon"] = 1] = "Mon";
Days[Days["Tue"] = 2] = "Tue";
Days[Days["Wed"] = 3] = "Wed";
Days[Days["Thu"] = 4] = "Thu";
Days[Days["Fri"] = 5] = "Fri";
Days[Days["Sat"] = 6] = "Sat";
})(Days || (Days = {}));
;
// 枚举项有两种类型:常数项和计算所得项
// 计算所得项
var Color;
(function (Color) {
Color[Color["Red"] = 0] = "Red";
Color[Color["Green"] = 1] = "Green";
Color[Color["Blue"] = "blue".length] = "Blue";
Color[Color["green"] = 11] = "green";
})(Color || (Color = {}));
;
console.log(0 /* Obj.o */);
console.log(1 /* Obj.b */);
console.log(20 /* Obj.j */); //常数枚举在编译阶段时,会直接打印console.log(20 /* Obj.j */);,会计算计算成员
console.log(ABC.a);
console.log(ABC.b);
console.log(ABC.c); //外部枚举在编译阶段时,会直接打印console.log(ABC.c);,不会编译计算结果
console.log(0 /* AD.a */); //结合起来的枚举在编译阶段时,会直接打印console.log(0 /* AD.a */);,计算结果会变成0
__EOF__

本文作者:userName
本文链接:https://www.cnblogs.com/wencaiguagua/p/18021456.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/wencaiguagua/p/18021456.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
代码改变了我们,也改变了世界
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)