我遇到过一些常见的问题,例如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定义以使其成为可能?
答案 0 :(得分:0)
不幸的是,我认为没有办法覆盖现有的TypeScript定义文件并更改其部分声明。 TypeScript允许您扩充现有接口,但此功能仅限于添加内容,而不是更改现有内容。
但是,正如您所提到的,您可以编写自己的TypeScript定义文件;在这种情况下,您可以完全控制所有类型。
以下是我上面提到的增强过程的一些信息:https://www.typescriptlang.org/docs/handbook/declaration-merging.html