以下代码中 value 只能推断出是 1 | 2 | 3 。
想问下大佬们,TypeSciprt 目前只不支持在 if(k === 'a') 时推断出 value 为 1 。
或者有没有什么搜索的关键词。查了半天没找到怎么更一步收窄这个类型。
const map = {
a: 1,
b: 2,
c: 3,
} as const;
type Map = typeof map;
function fn<K extends keyof Map>(k: K, value: Map[K]) {
if (k === 'a') {
console.log(value); //value: 1 | 2 | 3
}
if (k === 'b') {
console.log(value);
}
if (k === 'c') {
console.log(value);
}
}
|