gpt4 book ai didi

enums - 有没有办法在环境的 typescript 中创建枚举?

转载 作者:搜寻专家 更新时间:2023-10-30 20:55:05 28 4
gpt4 key购买 nike

在 typescript 0.9 发布后编辑:现在支持枚举:

enum Select { every, first, last }

原始问题:

此处讨论了 typescript 中的枚举,但没有解决方案导致环境设计。环境枚举定义意味着枚举仅由编译器处理,编译后的 js 输出文件仅处理原始数值。就像在 C++11 中一样。

我得到的最接近的是

declare var Color = { red: 1, blue: 2, green: 3 } // DOES NOT COMPILE

但是编译器不接受这个:“环境变量不能有初始值设定项”。

编辑
结合 dmck 的回答:

declare var Color: { Red: number; Green: number; Blue: number; };

这不会输出任何js代码。换句话说,它是环境的。然而,这也使它变得无用:

declare var Color: { Red: number; Green: number; Blue: number; };

function test() {
var x = Color.Blue; // null ref exception, no Color object
console.log(x == Color.Red);
}

会产生运行时错误,因为 Color 没有在 js 中定义。 ts声明只是声称js中有一些Color对象,而实际上没有定义,没有。 Ti修复这个我们可以添加

var Color = {
Red: 1,
Green: 2,
Blue: 3
};

但现在枚举实现不是“环境”,因为 typescript 编译器执行 C++ 编译器所做的事情,将所有出现的枚举值减少为纯数字。 当前的环境声明允许类型检查但不允许此类替换。

最佳答案

TypeScript 0.9 允许这样做:

declare module A { export enum E { X, Y, Z } }

关于enums - 有没有办法在环境的 typescript 中创建枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15841443/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com