Skip to content

第二章练习答案 ​

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);
  }
}

用心记录每一步成长