Open2

TypeScriptの挙動メモ

moshmosh

ネストされたユニオンにはnarrowingが働かない

type UnionValue = {
  value: string | number;
};

type StringValue = {
  value: string;
};

const useUnion = (union: UnionValue) => {
  if (typeof union.value === "string") {
    // union.valueはstring型にnarrowingされる
    // unionはUnionValueのまま
    useString(union); // 型エラー
  }
};

const useString = (string: StringValue) => {};