将打字稿翻译成 Java

Translate Typescript to Java

我正在尝试将 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() 函数 returns... Customtype1 的一个实例是什么?字符串“给定”?两个都?最后,当调用 !proof 时,它代表什么?因为我在任何部分都看不到任何布尔值。

  1. 问:?代表什么?

    A: 是一个ternary operator.

  2. 问: proof() 的作用是什么return?

    A: 它 return 是以下任何一项:a CustomType1、文字字符串 'given'undefined.具体来说,就是一个union.

  3. 问:调用!proof时,代表什么?

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

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

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