Каковы аргументы в родительском классе наследования в Typescript? - PullRequest
1 голос
/ 14 марта 2019

В примере, который я нашел в документации, кажется, что определенное наследование в Typescript может иметь дополнительные аргументы для родительского класса наследования.Я не уверен, является ли это новой функцией в Typescript.

Например:

export class HttpStrategy extends PassportStrategy(Strategy, 'google') {
  constructor(private readonly authService: AuthService) {

В этом случае родительский класс PassportStrategy может принимать аргумент.Однако это не похоже на аргумент, который будет передан конструктору PassportStrategy, потому что он был бы передан через super (), если бы это было так.

Итак, каковы эти аргументы и гдеаргументы родительского класса в используемом наследовании Typescript?

PS: я пытался найти в Интернете его документацию, но мне кажется, что я не ищу правильное ключевое слово таких аргументов.

1 Ответ

2 голосов
/ 14 марта 2019

То, что вы предоставляете в предложении extends, может быть любым выражением, так что происходит то, что функция с именем PassportStrategy вызывается с этими двумя аргументами, а затем HttpStrategy расширяет классэто возвращает , вот так:

function Base(arg) {
  return class {
    doSomething() {
      console.log("something: ", arg);
    }
  };
}

class Sub1 extends Base(1) {
}

const s1 = new Sub1();
s1.doSomething();

class Sub2 extends Base(2) {
}

const s2 = new Sub2();
s2.doSomething();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...