使用 satisfies 实现穷举类型保护

201 天前
 llej
const opType = 'create' as 'create' | 'updated'

if (opType === 'create') {
    // create....
} else if (opType === 'updated') {
    // updated....
} else {
    opType satisfies never
}

const opTypeNew = 'create' as 'create' | 'updated' | 'delete'
if (opTypeNew === 'create') {
    // create....
} else if (opTypeNew === 'updated') {
    // updated....
} else {
    // 这里就会报错
    // 每次在穷举所有可能性的时候在最后的分支使用这种技巧可以使得当我们遗漏了某些情况的时候会提示我们
    // Type '"delete"' does not satisfy the expected type 'never'. 
    opTypeNew satisfies never
}

记得以前看到尤雨溪讲过这个技巧,不过当时还没有 satisfies 关键字,所以刚刚突然想到这样可以更简洁,转译的 js 代码也更短

1175 次点击
所在节点    TypeScript
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1112033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX