Как расширить jQuery в TypeScript и экспортировать дополнительные типы из того же модуля?Jquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Anonymous
 Как расширить jQuery в TypeScript и экспортировать дополнительные типы из того же модуля?

Сообщение Anonymous »

Я работаю над лучшими типами для терминала jQuery. Это файл d.ts , который я имею до сих пор:

Код: Выделить всё

declare module 'jquery.terminal' {
...
export interface JQueryStatic {
omap(object: { [key: string]: anyFunction }, fn: mapFunction): { [key: string]: anyFunction };
jrpc(url: string, method: string, params: any[], success?: (json: JSONObject, status: string, jqxhr: JQuery.jqXHR) => void, error?: (jqxhr: JQuery.jqXHR, status: string) => void): void;
terminal: JQueryTerminalStatic;
}
...
const JQTerminal: (window: Window, JQuery: JQueryStatic) => void;
export default JQTerminal;
}

< /code>
Проблема заключается в использовании с оригинальной jQuery: < /p>
import jQuery from 'jquery';
import terminal from 'jquery.terminal';

const $ = terminal(window, jQuery);
< /code>
Я получил ошибку: < /p>

type 'jquerystatic' отсутствует следующие свойства от типа 'jquerystatic': omap, jrpc, терминал [2345] < /p>
< /blockquote>
whehy codes jbery jquery jquery jquery>
 codes jquery> Код: < /p>
const JQTerminal: (window: Window, JQuery: JQueryStatic) => void;
< /code>
Я пытался создать тип, но похоже, что интерфейсы передаются ссылкой, а не по значению.import jQuery from 'jquery';
type JQueryStaticOriginal = JQueryStatic;
import terminal from 'jquery.terminal';
import type { JQueryTerminal, JQueryStatic } from 'jquery.terminal';

const $ = terminal(window, jQuery);

const hello = (this: JQueryTerminal) => {
this.echo('hello');
}

$('body').terminal({ hello });
Вам необходимо установить версию jQuery.terminal из филиала, которая включает в себя экспортируемые типы модулей.

Код: Выделить всё

npm install 'github:jcubic/jquery.terminal#docusaurus'
Проблема в том, что jquerystatic не экспортируется из jQuery, это глобальный тип.
Код на NPM, который используется в настоящее время только экспорт:

Код: Выделить всё

declare module 'jquery.terminal' {
const JQTerminal: (window: Window, JQuery: JQueryStatic) => void;
export default JQTerminal;
}
А остальное только что объявлено, поэтому он дополняет jQuery и jquery static без какого -либо экспорта. Это использование по умолчанию плагинов jQuery.

Код: Выделить всё

JQueryTerminal
- это пространство имен и интерфейс, который расширяет jquery .
Я пытался определить все типы за пределами модуля, но тогда я получил ошибку, что модуль может экспортировать только вещи изнутри.
Я открыт для любых предложений, которые будут делать мой код. Чтобы использовать его при импорте модуля jQuery . Мне нужно иметь возможность использовать

Код: Выделить всё

(globalThis.$ as JQueryStatic).terminal
, которые имеют статические методы.
Прямо сейчас мой d.ts - единственный файл, но я в порядке, если это нужно разделить на несколько файлов.

Подробнее здесь: https://stackoverflow.com/questions/795 ... e-same-mod
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Jquery»