第一章练习答案
ts
type User = { id: string; name: string };
function isUser(value: unknown): value is User {
if (typeof value !== 'object' || value === null) return false;
const record = value as Record<string, unknown>;
return typeof record.id === 'string' && typeof record.name === 'string';
}
function parseUser(text: string): User {
const value: unknown = JSON.parse(text);
if (!isUser(value)) throw new Error('invalid user payload');
return value;
}类型守卫只负责证明结构;JSON.parse 仍可能抛出语法错误,真实接口还应单独处理状态码、超时和错误响应。