타입을 명시적으로 작성하지 않았을 때 타입 추론을 하게 된다.

interface Person {
  name: string;
  age: number;
}

interface Car {
  brand: string;
  wheel: number;
}

function hello(obj: Person | Car) {
  
}
interface Person {
  name: string;
  age: number;
}

interface Car {
  brand: string;
  wheel: number;
}

function isPerson(arg: any): arg is Person {
  return arg.name !== undefined;
}

function isCar(arg: any): arg is Car {
  return arg.wheel !== undefined;
}

function hello(obj: Person | Car) {
  if (isPerson(obj)) {
    console.log(obj.name);
  }

  if (isCar(obj)) {
    console.log(obj.brand);
  }
}