第二章练习答案
ts
type Result<T> =
| { kind: 'loading'; requestId: string }
| { kind: 'empty' }
| { kind: 'success'; data: T }
| { kind: 'error'; message: string };
function assertNever(value: never): never {
throw new Error(`unhandled state: ${JSON.stringify(value)}`);
}
function render(result: Result<string[]>) {
switch (result.kind) {
case 'loading': return `请求 ${result.requestId}`;
case 'empty': return '没有结果';
case 'success': return result.data.join(', ');
case 'error': return result.message;
default: return assertNever(result);
}
}