function overloading in typescript 输入optional arguments,返回值type不同时

58 阅读1分钟
export function createTheme(id: number): B | C
export function createTheme(id: number, confidence: number, direction: DirectionString): A
export function createTheme(
  id: number,
  confidence?: number,
  direction?: DirectionString,
): A | B | C {
  const theme = {
    id,
  }
  if (confidence) {
    Object.assign(theme, { confidence })
  }
  if (direction) {
    Object.assign(theme, { direction })
  }
  return theme
}