無理して1行で1つの式で書くよりも、条件式を分解してそれぞれの結果を変数として定義したほうが読みやすくなります。

1行のif文

if((typeof a === "string"  &&  typeof b === "string")  ||  (typeof x === "number"  &&  typeof y === "number")){
  // `a`と`b`が文字列型 または `x`と`y`が数値型のときの処理
}


複数行に分けたif文

const isAbString = typeof a === "string"  &&  typeof b === "string";
const isXyNumber = typeof x === "number"  &&  typeof y === "number";
if(isAbString || isXyNumber){
  // `a`と`b`が文字列型 または `x`と`y`が数値型のときの処理
}


ただ余計な変数ができてしまうので、このあと定義した変数を使わないのであれば、この場合は1行で良いと思います。 下記のようにインデントを揃えることで見やすくなります。

if(   (typeof a === "string"  &&  typeof b === "string")
  ||  (typeof x === "number"  &&  typeof y === "number")){

  // `a`と`b`が文字列型 または `x`と`y`が数値型のときの処理
}
2023/11/09