【问题标题】:how to return typed value如何返回类型值
【发布时间】:2020-04-02 06:12:55
【问题描述】:

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

类型 'string' 不能分配给类型 '"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();
}

【问题讨论】:

    标签: typescript class typing


    【解决方案1】:

    您需要添加一个所谓的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

    【讨论】:

    • 有效,但我在控制台中收到此错误:错误 TS2304:找不到名称'const'
    • @Igor 您必须使用旧版本的 TS - const 断言是在 3.4 (typescriptlang.org/docs/handbook/release-notes/…) 中添加的 - 我还添加了一个游乐场链接,您可以在其中尝试不同的TS 版本...
    猜你喜欢
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多