const opType = 'create' as 'create' | 'updated' if (opType === 'create') { // create.... } else if (opType === 'updated') { // updated.... } else { opType satisfies never } cont 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 代码也更短