以下代码中 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);
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.