如何 return 输入值

how to return typed value

我有这个函数可以随机化 3 个字符串,但是当我尝试 return 这个值时,我得到了这个错误

Type 'string' is not assignable to type '"DAY" | "GTD" | "GTC"'

我的函数:

export const randomizeTimeinforce = (): 'DAY' | 'GTD' | 'GTC' => {
  const timeinforce = ['DAY', 'GTD', 'GTC'];
  return timeinforce[Math.floor(Math.random() * 3)];
};


export class MyCoolClass {
  public timeinforce: 'DAY' | 'GTD' | 'GTC' = randomizeTimeinforce();
}

您需要添加所谓的 const assertion 以避免 TS 将您的 timeinforce 数组解释为 string[]。后一种(默认)行为也称为类型扩大,是您要在此处避免的事情...

export const randomizeTimeinforce = () => {
  const timeinforce = <const>['DAY', 'GTD', 'GTC'];
  return timeinforce[Math.floor(Math.random() * 3)];
};


export class MyCoolClass {
  public timeinforce = randomizeTimeinforce();
}

TypeScript playground