Что означает ключевое слово «новое» перед списком параметров в стрелочной функции машинописного текста?

Я новичок в TypeScript или даже в JavaScript, если уж на то пошло. И я пытался обдумать пример от Microsoft о том, как интегрировать аутентификацию AzureAD в реагирующее приложение. В примере используется HOC для аутентификации компонента. Декларация для HOC выглядит так:

function withAuthProvider<T extends React.Component<AuthComponentProps>>(
    WrappedComponent: new (props: AuthComponentProps, context?: any) => T
): React.ComponentClass {...}

Большая часть более-менее понятна. Что меня озадачивает, так это тип WrappedComponent. В частности, я не понимаю, что делает ключевое слово new в этом контексте.

Может кто-нибудь мне помочь?

🤔 А знаете ли вы, что...
JavaScript позволяет создавать расширения для веб-браузеров, улучшая их функциональность.


4
113
1

Ответ:

Решено

Это тип конструктора. Это означает, что когда вы вызываете его с помощью new, вы можете передать ему аргумент props и необязательный аргумент context, и он создаст экземпляр типа T.

Вот пример:

class Foo {
    private value: number;
    constructor(x: number, y: number = 1) {
        this.value = x + y;
    }
}

const foo: new (arg1: number, arg2?: number) => Foo = Foo;
// can be invoked like this (with new)
const x1: Foo = new foo(1);
const x2: Foo = new foo(1, 2);
// cannot be invoked without new
// these lines will error at both compile- and run-time
const y1: Foo = foo(1);
const y2: Foo = foo(1, 2);