gpt4 book ai didi

将 this 作为参数 typescript

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:52 24 4
gpt4 key购买 nike

当我浏览 rxjs 库时,我偶然发现了这个函数:

export function map<T, R>(this: Observable<T>, project: (value: T, index: number) => R, thisArg?: any): Observable<R> {
if (typeof project !== 'function') {
throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');
}
return this.lift(new MapOperator(project, thisArg));
}

来源:https://github.com/ReactiveX/rxjs/blob/master/src/operator/map.ts

我想知道在传递名为 this 的参数时到底发生了什么。它只是像任何其他参数一样对待,还是在您执行此操作时 typescript 会执行一些特殊操作?

最佳答案

你不能直接传递 map对应于 this 的参数签名中的参数。 this TypeScript 使用参数来指示上下文的类型,并且在运行时没有相应的参数。

然而,map可以使用 Function.prototype.call 调用函数或 Function.prototype.apply , 上下文可以传递给 callapply .

例如:

import { of } from "rxjs/observable/of";
import { map } from "rxjs/operator/map";

const source = of(1);
const mapped = map.call(source, value => value + 1);

在这个例子中,source将对应于 this在执行map , 它的类型是 Observable<number> .

有关详细信息,请参阅 documentation 中的“this 参数”部分.

关于将 this 作为参数 typescript ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com