我在Masala Parser中有3种解析器。 SingleParser<Y>
返回一个Y
值,ArrayParser<Y>
返回一个Array<Y>
,VoidParser
不返回任何值。
它们都是IParser<Y>
,包含许多常用功能。
它在javascript上运行,但我想制作 masala.d.ts 类型的文件。我想优化不再重复的map()
:
export interface IParser<T> {
map<Y> (f: (T) => Y): IParser<Y>;
// common functions
debug(s:string, b?:boolean); // ... others
}
interface VoidParser extends IParser<void> {
map<Y> (f: (T) => Y): VoidParser<Y>;
}
export interface SingleParser<T> extends IParser<T> {
map<Y> (f: (T) => Y): SingleParser<Y>;
}
export interface ArrayParser<T> extends IParser<T> {
map<Y> (f: (T) => Y): ArrayParser<Y>;
}
它们有许多功能,例如map()
,我想使用 this 来简化IParser:
export interface IParser<T> {
map<Y> (f: (T) => Y): this<Y>;
// common functions ...
}
很遗憾,此处不接受this<Y>
(使用打字稿2.6或3.0)。正确的语法是什么?