给出一个有区别的联合:
type ViewModel<T> =
| { state: State.LOADING, model: undefined }
| { state: State.READY, model: T }
| { state: State.NOT_FOUND, model: null }
这种类型推断的方式有效:
switch (viewModel.state) {
case State.LOADING:
viewModel.model; // undefined
break;
case State.READY:
viewModel.model; // Foo
break;
case State.NOT_FOUND:
viewModel.model; // null
break;
}
但这不是(唯一的区别是对象的分解):
const { state, model } = viewModel;
switch (state) {
case State.LOADING:
model; // Foo | null | undefined
break;
case State.READY:
model; // Foo | null | undefined
break;
case State.NOT_FOUND:
model; // Foo | null | undefined
break;
}
我想知道的是:
其他阅读内容: