Typescript 全类型泛型承诺类型

Typescript 全类型泛型承诺类型,typescript,Typescript,在书中提到“全类型的通用承诺打字。这对我来说是希腊语 有人能给我解释一下这一点,并举例说明它在Typescript 1.0中的用法吗?该问题如示例中所述。以下问题将失败,即TS无法编译promise库的实现(应该编译): 接口承诺{ 结果:价值; 然后(f:(v:Value)=>Promise):Promise; 然后(f:(v:值)=>T2):承诺; } 类允诺实现允诺{ 结果:价值; 然后(f:(v:Value)=>Promise):Promise; 然后(f:(v:值)=>T2):承诺;

在书中提到“全类型的通用承诺打字。这对我来说是希腊语


有人能给我解释一下这一点,并举例说明它在Typescript 1.0中的用法吗?

该问题如示例中所述。以下问题将失败,即TS无法编译promise库的实现(应该编译):

接口承诺{
结果:价值;
然后(f:(v:Value)=>Promise):Promise;
然后(f:(v:值)=>T2):承诺;
}
类允诺实现允诺{
结果:价值;
然后(f:(v:Value)=>Promise):Promise;
然后(f:(v:值)=>T2):承诺;
然后(f:(v:Value)=>any):承诺{
返回未定义;
}
}
该问题与能够定义不同。例如,将编译以下内容(接口定义):

接口承诺{
结果:价值;
然后(f:(v:Value)=>Promise):Promise;
}
接口承诺扩展承诺{
结果:价值;
然后(f:(v:Value)=>Promise):Promise;
然后(f:(v:值)=>T2):承诺;
然后(f:(v:Value)=>any):承诺;
}

这只是意味着对泛型类型规则进行了放宽,使得现在更容易声明类似承诺的类型。我对此也感到困惑。使用0.9.5,我能够以与文档中显示的完全相同的方式声明承诺类型。遗憾的是,TypeScript团队没有提供更多关于增强内容的信息。非常感谢。我不明白类型参数是什么意思?
interface Promise<Value> {
    result: Value;

    then<T2>(f: (v: Value) => Promise<T2>): Promise<T2>;
    then<T2>(f: (v: Value) => T2): Promise<T2>;
}

class PromiseImpl<Value> implements Promise<Value> {

    result: Value;

    then<T2>(f: (v: Value) => Promise<T2>): Promise<T2>;
    then<T2>(f: (v: Value) => T2): Promise<T2>;
    then<T2>(f: (v: Value) => any): Promise<T2> {
        return undefined;
    }
}
interface Promise<Value> {
    result: Value;

    then<T2>(f: (v: Value) => Promise<T2>): Promise<T2>;    
}

interface PromiseImpl<Value> extends Promise<Value> {

    result: Value;

    then<T2>(f: (v: Value) => Promise<T2>): Promise<T2>;
    then<T2>(f: (v: Value) => T2): Promise<T2>;
    then<T2>(f: (v: Value) => any): Promise<T2>;
}