我正在使用类型转换@2和highlandjs库。高地的类型忽略了mergeWithLimit(n)函数。它:
获取一个流,并将它们的值和错误合并到一个新的流中,限制可以在任何时候运行的未暂停流的数量。
现在,还没有为其DefinitlyTyped类型键入此方法。我试图添加它,但是流中只有一个interface Stream<R>,没有一个。
然而,我如何为流创建接口呢?我试着定义一个接口:
interface Stream<Stream<R>> implements Stream<R> {
mergeWithLimit(n: number): Stream<R>;
}然而,它并没有汇编:
365 interface Stream<Stream<R>> implements Stream<R> {
~
index.d.ts(365,28): error TS1005: ',' expected.
365 interface Stream<Stream<R>> implements Stream<R> {
~
index.d.ts(365,31): error TS1109: Expression expected.
365 interface Stream<Stream<R>> implements Stream<R> {
~~~~~~
index.d.ts(365,44): error TS1005: ';' expected.如何正确地键入mergeWithLimit?
发布于 2017-02-01 17:28:19
通过定义一个接口,我们正确地管理了类型提示:
interface StreamOfStreams<R> extends Stream<Stream<R>> {
/**
* Takes a Stream of Streams and merges their values and errors into a single new Stream,
* limitting the number of unpaused streams that can running at any one time.
*
* @id mergeWithLimit
* @section Streams
* @name Stream.mergeWithLimit()
* @api public
*/
mergeWithLimit(n: number): Stream<R>;
}我们添加了一个地图定义:
interface Stream<R> extends NodeJS.EventEmitter {
map<U>(f: (x: R) => U): Stream<U>;
map<S>(f: (x: R) => Stream<S>): StreamOfStreams<S>;
}这使我们现在可以通过使用以下命令正确键入mergeWithLimit(n):
myStream.map<YourType>(whatEverTheMapFunction).mergeWithLimit(10)https://stackoverflow.com/questions/41936600
复制相似问题