ts如何在类中获取实例方法返回值的类型

class Foo {
  f():number{
    return 1
  }
  fn(){
    // ReturnType<函数> 可以返回函数返回值的类型 如何在类中使用
    // 下面这句话是报错的 我想获取 实例方法f的返回值类型
    const a:ReturnType<this.f> = this.f()
  }
}

[zangeci]: ts不是会自动类型推导吗?不要加类型就可以了

回复:

class Foo {
  f():number{
    return 1
  }
  fn(){
    let a = this.f()
    if(Math.random() > 0.1){
      // 报错:不能将类型“null”分配给类型“number”。
      a = null
    }else{

    }
    return a
  }
}
阅读 6k
2 个回答

1:

class Foo {
  f(): number {
    return 1
  }
  fn() {
    // ReturnType<函数> 可以返回函数返回值的类型 如何在类中使用
    // 下面这句话是报错的 我想获取 实例方法f的返回值类型
    const a: ReturnType<Foo['f']> = this.f()
    console.log(a)
  }
}

2:

class Foo {
  f(): number {
    return 1
  }
  fn() {
    let a: number | null = this.f()
    if (Math.random() > 0.1) {
      // 报错:不能将类型“null”分配给类型“number”。
      a = null
    } else {
    }
    return a
  }
}
class Foo {
  f():number{
    return 1
  }
  fn(this: Foo){
    const a:ReturnType<typeof this.f> = this.f()
  }
}

这样试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题