typescript - 理解基于uniswap代码的Typescript代码示例

标签 typescript

在uniswap网站的交换页面中有以下代码(https://github.com/Uniswap/interface/blob/main/src/pages/Swap/index.tsx第115行)

const {
    trade: { state: tradeState, trade },
    allowedSlippage,
    currencyBalances,
    parsedAmount,
    currencies,
    inputError: swapInputError,
  } = useDerivedSwapInfo()

基于我对 typescript 的有限理解,发生的情况是:1)useDerivedSwapInfo() 的输出正在被解构。 2) 其中一个变量是 trade,其类型为 { state: tradeState, trade }。但根据代码中实际使用 tradeState 和“其他”trade 的进一步用法,这是没有意义的。

谁能帮我理解这段代码? trade: { state: tradeState, trade } 行实际上做了什么

最佳答案

  1. The output of useDerivedSwapInfo() is being destructured.

正确!

  1. One of the variables is trade which has the type { state: tradeState, trade }.

不,我知道你是如何去那里的,但那是嵌套解构以及解构中的一些重命名。它将 x.trade.state 和 x.trade.trade 分别放入 tradeState 和 trade 中(其中 xuseDerivedSwapInfo() 的返回值。

这是该代码的非解构近似等效代码:

const x = useDerivedSwapInfo();
const tradeState = x.trade.state;
const trade = x.trade.trade;
const allowedSlippage = x.allowedSlippage;
const currencyBalance = x.currencyBalances;
const parsedAmount = x.parsedAmount;
const currencies = x.currencies;
const swapInputError = x.inputError;

(“接近等效”,因为 x.trade 实际上不会像上面那样被读取两次。)

关于typescript - 理解基于uniswap代码的Typescript代码示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72226238/

相关文章:

typescript - 指定的 glob 模式与任何文件都不匹配,或者默认测试目录为空。 - 测试咖啡馆

c# - 使用 Angular 将 POST 2 引导参数传递给 API

javascript - 我试图理解这段 TypeScript 代码

javascript - 使用箭头函数时,开发工具中未定义 `this`

typescript - 为什么 TypeScript 不检查算术运算的类型?

javascript - 如何从选择列表和复选框填充对象数组并将此数组用于表格

javascript - Angular:找不到名称为: 'date' 的控件

javascript - 为管道创建可导入类 - Angular 4

typescript - TS - 无法从子级调用 super() 内的公共(public)方法

node.js - Mongo $push 运算符不接受根据 typescript : "No overload matches this call" 的对象