Max*_*lan 11 typescript typescript-typings
tl;博士为什么
const func = (a: unknown) => {
if (a && typeof a === 'object' && 'b' in a) {
a.b;
}
};
Run Code Online (Sandbox Code Playgroud)
给出以下错误信息
Property 'b' does not exist on type 'object'.
Run Code Online (Sandbox Code Playgroud)
?
编辑:在更仔细地研究这个问题之后,我有一个更简单的例子。所以让我重新表述一下我的问题:
如何缩小object
TypeScript 中的输入范围?
tl;博士为什么
const func = (a: object) => {
if ('b' in a) {
a.b;
}
Run Code Online (Sandbox Code Playgroud)
给出以下错误信息:
Property 'b' does not exist on type 'object'.
Run Code Online (Sandbox Code Playgroud)
?
小智 9
您应该仔细看看自定义类型保护。它们基本上让编译器知道,如果条件通过,则检查的值将具有特定类型。
在你的情况下:
const hasB = (value: unknown): value is { b: unknown } => {
return (
typeof value === 'object'
&& value !== null
&& 'b' in value
);
}
Run Code Online (Sandbox Code Playgroud)
const func = (a: unknown) => {
if (hasB(a)) {
a.b;
}
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5995 次 |
最近记录: |