Ole*_*Ole 2 javascript validation instanceof typescript
我正在阅读类验证器库的代码,它具有以下isInstance方法:
/**
* Checks if the value is an instance of the specified object.
*/
isInstance(object: any, targetTypeConstructor: new (...args: any[]) => any) {
return targetTypeConstructor
&& typeof targetTypeConstructor === "function"
&& object instanceof targetTypeConstructor;
}
Run Code Online (Sandbox Code Playgroud)
关于如何去理解类型有new (...args: any[]) => any什么想法吗?这是我第一次看到这种构造...
让我们将类型减少为更容易理解的更小,更小尺寸的块,然后重新构建完整的块。
首先,让new我们抛开脑海,专注于定义的后半部分:
(...args: any[]) => any
接下来,让我们暂时忘记参数:
() => any
希望这是一个返回type的函数any。
接下来,我们可以重新添加参数:
(...args: any[]) => any
...args: any[]使用的Rest Parameters构造本质上说可以提供任意类型的参数any。由于any参数数量未知,因此参数的类型为的数组any。
因此,现在希望这是一个可以接受任何数量的参数(类型any)并返回type 的函数any。
最后,我们可以添加new关键字以获取:
new (...args: any[]) => any
new此处的关键字指定可以将此函数视为类构造函数,并使用new关键字进行调用。
这给我们提供了整个画面,该函数是一个接受任何类型的参数(any返回类型)的函数,any可以将其用作带有new关键字的构造函数。
当在API上下文中使用时,它实际上允许您将任何类构造函数传递给该函数。
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |