javascript – typescript是否允许接口和字符串联合类型?

我正在尝试实现一个方法,它采用一个键参数,该键参数是字符串或可索引类型接口IValidationContextIndex的实例.实现如下:

  /**
   * Gets all ValidationContext container values.
   * @returns An array of ValidationContext instances contained in the cache.
   */
  public static getValidationContextValues(key: IValidationContextIndex | string ): Array<ValidationContext> {
    if (key instanceof IValidationContextIndex ) [
      return Object.values(<any> key);
    ]
    else {
      const vci = ValidationContainer.cache[<string>key];
      return Object.values(<any> vci);
    }
  }  

Typescript为if块提供以下错误

[ts] ‘IValidationContextIndex’ only refers to a type, but is being used as a value here.

有想法该怎么解决这个吗?

对于大多数接口,我认为可以添加一个类型属性(类型:’IValidationContextsIndex’;
),但在这种情况下不起作用,因为接口是一个可索引类型的接口….

解决方法:

有一种方法可以在运行时检查typescript中的类型,因为几乎所有内容都会在转换后成为一个对象,因此您可能需要遵循定义为user-defined typed guards内容

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐