Typescript 使用类型脚本中的开关获取函数的安全值

Typescript 使用类型脚本中的开关获取函数的安全值,typescript,types,switch-statement,type-safety,Typescript,Types,Switch Statement,Type Safety,我有一个函数,它的参数可以有3个不同的值。 此函数根据参数返回一个值,因此可以返回三个不同的值 所以我使用了一个开关,它比较参数来确定要返回的值。因此,对于参数的每个可能值,我都有一个安全值 但是,如果我用一个参数调用函数,返回的值是不确定的,TypeScript保留了其他2个值的可能性 函数get(值:“字符串”|“数字”|“布尔”){ 开关(值){ 大小写“字符串”: 返回“A”; 案例“编号”: 返回1; 案例“布尔”: 返回true; } } var test1=获取(“数字”);

我有一个函数,它的参数可以有3个不同的值。 此函数根据参数返回一个值,因此可以返回三个不同的值

所以我使用了一个开关,它比较参数来确定要返回的值。因此,对于参数的每个可能值,我都有一个安全值

但是,如果我用一个参数调用函数,返回的值是不确定的,TypeScript保留了其他2个值的可能性

函数get(值:“字符串”|“数字”|“布尔”){
开关(值){
大小写“字符串”:
返回“A”;
案例“编号”:
返回1;
案例“布尔”:
返回true;
}
}
var test1=获取(“数字”);


那么,如何获得安全值呢?我必须进行枚举吗?提前感谢

使用泛型,与将
s映射到返回值的对象结合使用:

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");
const map = {
    string: 'A',
    number: 1,
    boolean: true,
} as const;