js里promise<> 代表什么,在参数那里竖线什么意思,竖线后面的Promise<string>和,最后参数外的Promise<string>有什么区别

async getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {
    await this.getNetwork();
    const params = await resolveProperties({
        address: this._getAddress(addressOrName),
        blockTag: this._getBlockTag(blockTag),
        position: Promise.resolve(position).then((p) => hexValue(p))
    });
    const result = await this.perform("getStorageAt", params);
    try {
        return hexlify(result);
    } catch (error) {
        return logger.throwError("bad result from backend", Logger.errors.SERVER_ERROR, {
            method: "getStorageAt",
            params, result, error
        });
    }
}

js里promise<> 代表什么,在参数那里竖线什么意思,竖线后面的Promise和,最后参数外的Promise有什么区别

这是typescript的语法,做类型校验的,promise<> 代表参数是promise,<>是泛型,表示这个promise的返回值是什么类型;竖线是或者的意思,就是参数有可能是多种类型,就用|来间隔一下,竖线后面的Promise代码代表有可能参数是个promise;参数外的Promise代表getStorageAt这个函数的返回值类型是个Promise,并且这个Promise的返回值是个string