【问题标题】:Translate Typescript to Java [closed]将 Typescript 翻译成 Java [关闭]
【发布时间】:2021-10-22 23:12:20
【问题描述】:

我正在尝试将 Typescript 中的代码更改为 Java。我真的对 Typescript 不太了解,并且卡在了这个功能上。我将代码简化为更简单的情况。在这种情况下,CustomType1CustomType2 只是自定义“导出类型”(我在 Java 中作为类实现)。

proof(): CustomType1 | 'given' | undefined {
    if (something) {
        return 'given'
    }

    const evidence = ... //Set to a new "instance" of CustomType2
    return evidence ? function(evidence) : undefined //Function returns an "instance" of CustomType1
}

然后,之前的代码会在这样的某个时间点运行

const proof = proof()
if (!proof || proof === 'given') {
    //...
}

如果有人向我解释,Typescript 上的这段代码是如何工作的,我将不胜感激。

? 代表什么? proof() 函数返回什么... Customtype1 的一个实例?字符串“给定”?两个都?最后,当调用!proof 时,它代表什么?因为我在任何部分都看不到任何布尔值。

【问题讨论】:

  • 这里的伪代码太多了,imo。您应该将此问题简化为我们可以自己运行的可重现示例。
  • java != javascript
  • @Rubydesic 我只需要解释一下 proof() 函数返回什么......这确实是理解 Typescript 语法的问题。但我会编辑。
  • @KarthikeyanVaithilingam 我知道...
  • 请阅读 typescript 的联合类型:typescriptlang.org/docs/handbook/2/…

标签: java typescript code-translation


【解决方案1】:
  1. 问:? 代表什么?

    答:ternary operator

  2. 问: proof() 函数返回什么?

    A: 它返回以下任一值:CustomType1、文字字符串 'given'undefined。具体来说,是union

  3. 问:拨打!proof时,代表什么?

    答:请注意,您的示例代码中发生了一些棘手的事情。局部变量const proofshadowing,即在当前作用域内替换原来的proof函数。代码会更清楚地写成

     const result = proof()
     if (!result || result === 'given') {
         //...
     }
    

    此代码在功能上大部分是等效的。这里,!resulttrue,如果 resultfalsey 值。与此案例最相关的是 true if result === undefined

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-14
    • 2017-12-26
    • 2014-11-17
    • 2018-03-09
    • 1970-01-01
    • 2012-11-18
    • 2012-11-20
    • 2017-11-07
    相关资源
    最近更新 更多