Расширьте объект jQuery и добавьте больше типов для одного аргумента функции - PullRequest
0 голосов
/ 26 октября 2019

В терминале jQuery у меня есть файл d.ts, и я расширяю jQuery следующим образом:

declare namespace JQueryTerminal {
    ...
    type echoValue = string | string[] | Element | JQuery<Element> | (() => string | string[]);
    ...
}


interface JQueryTerminal<TElement = HTMLElement> extends JQuery<TElement> {
   ...
    echo<TValue = JQueryTerminal.echoValue>(arg: TypeOrPromise<TValue>, options?: JQueryTerminal.EchoOptions): JQueryTerminal;
   ...
}

ПРИМЕЧАНИЕ: это двойные типы для идеи JQueryTerminal в d.ts пришли из @ types / jquery.

возможно ли сделать JQueryTerminal универсальным с двумя значениями, которые я буду использовать в echo. В основном я хочу указать, какие значения будет принимать echo, но необходимо расширить JQueryTerminal.echoValue.

Мне это нужно, потому что в новом API я позволю добавить renderHandler, который будет обрабатывать различные типы методом echo.

Так что, в принципе, я хочу, чтобы что-то подобное было возможно:

class Foo {}

var term = $('body').terminal<Foo>({}, {
    renderHandler: function(value) {
        if (value instanceof Foo) {
            return $('<div>Foo</div>');
        }
});

term.echo(new Foo());
term.echo("foo");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...