首页 > 解决方案 > 必需的参数需要在构造函数或函数调用中传递

问题描述

我有一个现有的 JS 类,我想通过严格的类型将其转换为 TS。简化的 JS 代码如下所示:

class Signer {
  constructor (user) {
    this.user = user
  }

  createSignature (user = this.user) {
    if (!user) throw new TypeError('user required')
    console.log(user)
  }
}

user参数在构造函数和方法中都是可选的,createSignature但必须传入其中一个。例如,类的这两种用法都是有效的:

用户传入构造函数:

const signer = new Signer('joe')
signer.createSignature() // => "joe"

用户传入函数调用:

const signer = new Signer()
signer.createSignature('joe') // => "joe"

但是这种用法是无效的:

const signer = new Signer()
signer.createSignature() // throws TypeError

是否可以使用 Typescript 类型系统来表达这一点?

标签: typescript

解决方案


推荐阅读