[英]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.