如何解决在 Typescript 中使用 switch 获取函数的安全值
我有一个函数,它接受一个可以有 3 个不同值的参数。 这个函数根据参数返回一个值,所以它可以返回三个不同的值。
所以我使用了一个开关,它比较了参数来确定要返回的值。所以我对参数的每个可能值都有一个安全值。
但是如果我用参数调用函数,返回的值是不确定的,TypeScript 保留了其他 2 个值的可能性。
function get(value: "string" | "number" | "boolean") {
switch (value) {
case "string":
return "A";
case "number":
return 1;
case "boolean":
return true;
}
}
var test1 = get("number");
那么如何拥有安全值呢?我必须通过枚举吗?提前致谢
解决方法
改用泛型,结合将 value
映射到返回值的对象:
const map = {
string: 'A',number: 1,boolean: true,};
type MapType = typeof map;
function get<T extends keyof MapType>(value: T) {
return map[value];
}
var test1 = get("number");
如果您希望返回类型精确 - 例如不仅是 number
,而是 1
- 然后声明地图 as const
以避免自动加宽:
const map = {
string: 'A',} as const;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。