打字稿解构与所需参数

joh*_*y 5 6 javascript object destructuring typescript ecmascript-6

编辑抱歉,我的问题有点不清楚。我要强制始终要求getList参数。所以我没有默认值。例如,我希望用户始终提供一个getlist

我正在尝试使用一些可选参数和一些必需参数创建一个构造器

export class PageConfig {
    constructor({
        isSliding = false,
    }: {
        isSliding?: boolean
        getList: (pagingInfo: PagingInfo) => Observable<any>
    } = {  }) { }
}
Run Code Online (Sandbox Code Playgroud)

执行此操作时出现错误

类型“ {}”中缺少getList,但类型中必需...

我希望能够在像这样的类中使用它:

class UsersPage {

    config = new pageConfig({ this.getList })    

    getList(pagingInfo: PagingInfo) {
      // do work...
    }
}
Run Code Online (Sandbox Code Playgroud)

注意: 我已经简化了本示例的类,但是我拥有更多的属性,我想利用解构,因此除了从声明中声明之外,我无需配置类的实例化

如何强制销毁过程中必须传递getList?

for*_*d04 5

您使用默认值{}作为PageConfig构造函数参数,但getList在类型中将其标记为必需。如果我对您的理解正确,那么您需要构造函数参数并getList始终进行设置,因此将代码更改为:

export class PageConfig {
  constructor({
    getList,
    isSliding = false
  }: {
    getList: (pagingInfo: PagingInfo) => Observable<any>;
    isSliding?: boolean;
  }) {
    … // use getList and isSliding
  }
}
Run Code Online (Sandbox Code Playgroud)

这种语法(使用默认值进行销毁)有时会有点麻烦。当您提取构造函数参数type时,它会变得更加清晰。

TypeScript文档示例