[英]TypeScript generic method with type dependent parameter
我有一個想法,可以根據該方法的通用類型自動檢查參數的類型。 但是參數的類型應該與給定泛型的具體屬性的類型相同。 讓我給你看例子。
假設我有以下接口:
interface IMessage {
name: string,
payload: any
}
interface IConcreteMessage {
name: "concreteMessage",
payload: string
}
我想通過這種方式將一些方法接受IMessage稱為通用參數:
someobject.genericMethod<IConcreteMessage>(78)
現在的問題是,應該如何聲明該方法,以便編譯器為給定參數引發類型錯誤?
public genericMethod<T extends IMessage>(payload: ??) {}
第二件事-我能以某種方式僅從給定的通用參數中提取方法中的“ concreteMessage”值嗎?
您可以使用類型查詢來實現此目的:
genericMethod<T extends IMessage>(payload: T['payload']) { }
someobject.genericMethod<IConcreteMessage>(78) // will be an error
您可以在運行時從文字字符串類型獲取字符串,您將需要傳遞字符串值作為參數。
好的,所以我得到了以下解決方案:
genericMethod<T extends IMessage>(name: T['name'], payload: T['payload']) { }
缺點是,即使此屬性為常數,我也需要在每次調用時輸入第一個參數,但我認為我可以接受
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.