簡體   English   中英

是什么 <this> 在TypeScript泛型中意味着什么?

[英]What does <this> mean in TypeScript generics?

我們在應用程序中將express與TypeScript一起使用。 我遇到了他們的類型定義,想知道以下是什么意思:

export interface IRouter extends RequestHandler {
    all: IRouterMatcher<this>;
}

在此處輸入圖片說明

特別是IRouterMatcher<this>

我看了幾次文檔,找不到任何提及此用例的內容。 而且,由於尖括號通常會被剝奪,因此很難在SO或Web中搜索<this>

this是指當前可用的類型。

這也可能是覆蓋的類或接口的子類型。

另請參見https://www.typescriptlang.org/docs/handbook/advanced-types.html中的 這種類型的多態

例:

class Calculator {
    a: number;
    add(): this {
        a++;
        return this;
    } 
}

class AdvancedCalculator {
    substract(): this {
         a--;
         return this;
    } 
}

new AdvancedCalculator()
   .add() // returns AdvancedCalculator as "this" 
   .substact() // it compiles! 

我相信在您的示例中, <this>指的是當前實現接口的類型。 例如,如果名為TestClass的類實現了IRouter,則返回IRouterMatcher<this>的函數將返回IRouterMatcher<TestClass>

經過更多研究之后,使用<this>在功能上可能等同於說<T extends IRouter>例如all: IRouterMatch<T extends IRouter> 使用this可能只是表達同一件事的一種較短的方法。

暫無
暫無

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

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