【问题标题】:Walrus operator TypeScript equivalent if statements海象运算符 TypeScript 等效的 if 语句
【发布时间】:2022-11-24 18:42:07
【问题描述】:

this question 极为相似,但 w.r.t 为 if 语句:

import { argv } from "process"

function foo(input: string): boolean
{
    return input === "ppp";
}

for (let i=0, v; v = foo(process.argv[2]) && i < 1; i++)
//if (let v = foo(process.argv[2]))
{
    console.log(v);
}
// console.log(v); <--- compile-time error, good !

有什么方法可以在 if 语句中定义类似 Walrus 的运算符吗?

% npx tsc --target es2022 --moduleResolution node example.ts
example.ts:9:9 - error TS1005: ')' expected.

9 if (let v = foo(process.argv[2]))
          ~

【问题讨论】:

    标签: node.js typescript


    【解决方案1】:

    不,if 是不可能的。如果您想缩小v 的范围,您唯一可以做的就是创建一个新块

    ...
    { 
      let v= ...; 
      if (v) {
        ...
      }
      console.log(v); // no error here
    } 
    console.log(v) // compile error here
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2015-02-08
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多