簡體   English   中英

具有類型相關參數的TypeScript通用方法

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

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