【发布时间】:2021-12-10 18:53:17
【问题描述】:
我正在尝试输入保护未知类型
const foo = (obj: unknown) => {
if (typeof obj === 'object' && obj) {
if ('foo' in obj && typeof obj.foo === 'string') {
return obj.foo;
}
}
};
“对象”类型上不存在属性“foo”。
我也试过is表达式不起作用:
const foo = (obj: unknown): obj is { foo: 'string' } => {
if (typeof obj === 'object' && obj) {
if ('foo' in obj && typeof obj.foo === 'string') {
return obj;
}
}
throw new Error();
};
【问题讨论】:
-
在检查
foo之前尝试将obj转换为any -
@RickyMo 你的意思是
(obj: any) => {...? -
您使用
unknown是否有特定原因?any会起作用,但你特别提到了unknown所以...... -
我正在使用 gts 预设,在使用 any 时会向我发出警告。而且我更喜欢输入检查代码,因为它是用户编写的代码
标签: typescript typeguards