簡體   English   中英

TypeScript:根據返回類型推斷參數類型

[英]TypeScript: Infer argument type based on return type

是否可以定義一個函數wrap ,使其有效?:

function wrap<Self>(
  creator: (self: Self) => Self
) {}

wrap(self => ({
  val: 2,

  func(): number {
    return self.val;
  }
}));

因為它是return self.val; TypeScript抱怨return self.val; 有錯誤:

屬性'val'在類型'{}'上不存在。

我希望可以這樣定義wrap ,以便推斷self的類型與函數的返回值是相同的類型。

問題是Self只是一個通用的。 編譯器無法知道Self表示的對象具有val屬性(甚至任何屬性;根據它所知道的,它們只是類型{} )。

讓它知道對Self期望:

interface HasVal {
    val: any;
}

function wrap<Self extends HasVal>(
    creator: (self: Self) => Self
) {}

wrap(self => ({
    val: 2,

    func(): number {
        return self.val;
    }
}));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM