iugo
V2EX  ›  TypeScript

如何使用 unknown 检查对象类型?

By iugo at 2019 年 8 月 22 日 · 4610 次点击
```
function check(v: unknown): v is { name: string; age: number } {
if (typeof v !== 'object' || v === null) {
return false;
}
const a = v as { name: unknown; age: unknown };
if (typeof a.name !== 'string' || typeof a.age !== "number") {
return false;
}
return true;
}
```

其中 `const a = v as { name: unknown; age: unknown }` 比较丑, 怎么写才好?
3 条回复  •  2019-08-22 19:14:08 +08:00
iugo
   1
iugo  
OP
   2019 年 8 月 22 日
根据 https://github.com/microsoft/TypeScript/issues/31132 的记录, #21732 'Worth a try, accepting PRs'.

也许现在没什么好的解决办法, 但将来会有吧.
momocraft
   2
momocraft  
   2019 年 8 月 22 日   ❤️ 1
把这里的 unknown 改成 any,在获得 unknown 值的地方用 unknown
iugo
   3
iugo  
OP
   2019 年 8 月 22 日
@momocraft 在尝试尽量使用 unknown 替代 any 的时候遇到的问题. 本身 any 用得也不多, 主要是传入值. 对于传入值, 转为 unknown 至少从语义上来说还是挺好的. 刚开始尝试.
© 2026 V2EX · 27ms · 3.9.8.5