javascript 在Typescript中打开联合类型的最佳方法是什么?例如编号|弦

mitkmikd  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(108)

假设我有以下类:

export class Complex {

/**
 * Representation of a complex number
 *
 * @param _re
 * @param _im
 */
constructor(private _re: number, private _im: number = 0) {

}

/** implementation details truncated **/
}

现在我想写下面的函数:

function add(z1: Complex | number, z2: Complex | number): Complex {
   if (/** z1 is number **/) {
        z1 = new Complex(z1)
   }
   if (/** z2 is number **/) {
        z2 = new Complex(z2)
   }
   return z1.add(z2)
}

用 typescript 写这篇文章最干净、最习惯的方法是什么?

rsl1atfo

rsl1atfo1#

在给定代码模板的情况下,最惯用的方法是使用typeof类型保护,如下所示:

function add(z1: Complex | number, z2: Complex | number): Complex {
  if (typeof z1 === "number") {
    z1 = new Complex(z1);
  }
  if (typeof z2 === "number") {
    z2 = new Complex(z2);
  }
  return z1.add(z2)
}

Playground链接到代码

相关问题