gpt4 book ai didi

typescript :可以使用枚举作为函数参数类型吗?

转载 作者:行者123 更新时间:2023-12-04 01:03:27 24 4
gpt4 key购买 nike

简单的问题,但我有疑问,找不到答案。

假设你有这个枚举:

export enum fooEnum {
Foo = 'foo',
Bar = 'bar'
}

那么这样输入我的函数参数可以吗?意思是'我希望收到一个字符串 'foo' 或 'bar' 作为参数并期望返回 'foo' 或 'bar'
function doStuff(myParam: FooEnum): FooEnum {
return myParam;
};

最佳答案

使用 enum 完全没问题作为参数。

您可能要考虑的唯一一件事(但在大多数情况下可以忽略不计)是 enum将包含在生成的 JavaScript 中.

export enum fooEnum {
Foo = 'foo',
Bar = 'bar'
}

会生成以下 JavaScript代码(或类似):
var fooEnum;
(function (fooEnum) {
fooEnum["Foo"] = "foo";
fooEnum["Bar"] = "bar";
})(fooEnum || (fooEnum = {}));

作为替代方案,您可以使用 String Literal类型,它不会包含在生成的代码中。
export type fooType = 'foo' | 'bar';

编辑 - 感谢 Aleksey L.

您还可以定义 const enum ,这也不包含在生成的代码中。
export const enum fooEnum {
Foo = 'foo',
Bar = 'bar'
}

并且在使用时
var bar = fooEnum.Bar;

以下代码将生成为
var b = 'bar';

const 枚举 VS 字符串文字类型

const enum方法这归结为个人喜好,无论你是否发现
doStuff(fooEnum.Bar);

string literal类型
doStuff('bar');

更具可读性。在这两种情况下生成的结果将是相同的。

关于 typescript :可以使用枚举作为函数参数类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51300970/

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