TypeScript:用函数中的类型覆盖`any`

时间:2018-02-22 17:13:07

标签: typescript

我遇到过一些常见的问题,例如grpc,这些函数接口通常是通用的any。 TypeScript中是否有一种方法可以覆盖具有特定类型的any

例如,grpc在TypeScript定义中具有以下内容:

export class ServerUnaryCall {
  /**
   * Indicates if the call has been cancelled
   */
  cancelled: boolean;

  /**
   * The request metadata from the client
   */
  metadata: Metadata;

  /**
   * The request message from the client
   */
  request: any;

  private constructor();

  /**
   * Get the endpoint this call/stream is connected to.
   * @return The URI of the endpoint
   */
  getPeer(): string;

  /**
   * Send the initial metadata for a writable stream.
   * @param responseMetadata Metadata to send
   */
  sendMetadata(responseMetadata: Metadata): void;
}

任何ServerUnaryCall的函数都会包含相同的字段,但我希望能够使用特定类型覆盖request: any

有没有办法做到这一点,即使这意味着重写TypeScript定义以使其成为可能?

1 个答案:

答案 0 :(得分:0)

不幸的是,我认为没有办法覆盖现有的TypeScript定义文件并更改其部分声明。 TypeScript允许您扩充现有接口,但此功能仅限于添加内容,而不是更改现有内容。

但是,正如您所提到的,您可以编写自己的TypeScript定义文件;在这种情况下,您可以完全控制所有类型。

以下是我上面提到的增强过程的一些信息:https://www.typescriptlang.org/docs/handbook/declaration-merging.html