首页 > 解决方案 > 构造函数中复杂参数的默认值

问题描述

如果这个问题是重复的,我最近很抱歉。但是我没有找到解决我的问题的方法。并提前感谢您的回复。

因此,如果我有以下接口,其中包含一些可选参数作为构造函数中的参数

interface User {
    firstname: string,
    lastname: string,
    onFirstNameChanged?: (name: string) => void,
    onLastNameChanged?: (name: string) => void,
}

并且我想创建一个新的类实例,我想在其中提供带有此接口的参数,如何设置可选参数的默认值onFirstNameChangedonLastNameChanged

我已经尝试了以下代码,但它不起作用并发送一个异常,告知未设置默认值

 constructor(
    private user: User = {...user, onFirstNameChanged: () => {}, onLastNameChanged: () => {}}
 ) {
   // ...do some stuff
 }

当然,有很多解决方案可以用不同的方式解决它,例如检查 costructor 主体内是否存在参数,但我问的是默认值。

这里的例子。

标签: typescript

解决方案


您可以在调用函数之前进行检查

changeName = () => {
    const name = 'Dave';
    this.user.onFirstNameChanged && this.user.onFirstNameChanged(name)
  }

或者,如果您确定某些功能可用,请使用!运算符

changeName = () => {
    const name = 'Dave';
    this.user.onFirstNameChanged!(name)
}

我推荐第一个,因为这就是您使用?运算符使这些功能可选的原因。


推荐阅读