仅在函数或构造函数实现中允许参数初始化

5 typescript visual-studio-2015

在下面,由于可选参数(“ = null”部分),它提示我错误。我希望我可以在抽象类中声明可选参数,但是为什么打字稿不允许我这样做?

abstract class Atom extends DatalogElement {
    abstract toStringFormula(elem: DatalogElement.StringFormat, variableMap: Collections.Dictionary<string, Collections.Dictionary<number, VariableMap>>=null): string 
}
Run Code Online (Sandbox Code Playgroud)

bas*_*rat 5

因为abstract函数不能具有函数,bodies并且默认参数是只有在具有函数主体的情况下才能实现的东西。

允许:

abstract class Atom {
    abstract foo(x:any);
}
Run Code Online (Sandbox Code Playgroud)

错误:

abstract class Atom {
    abstract foo(x:any=null); // Cannot have an implementation
}
Run Code Online (Sandbox Code Playgroud)

错误:

abstract class Atom {
    abstract foo(x:any){ // Error cannot have implementation
    }
}
Run Code Online (Sandbox Code Playgroud)

允许:

abstract class Atom {
    abstract foo(x?:any);
}
Run Code Online (Sandbox Code Playgroud)