Я делаю наборы для WordPress wp.customize
API. Однако я столкнулся с проблемой и не знаю, как объявить экспорт верхнего уровня.
Проблема заключается в следующем:
wp.customize
расширяет класс с именем Values
, что определено в «модуле». Кроме того, у этого класса есть подпись вызова (потому что на самом деле это не класс машинописного текста, а множество ужасных JS хаков). Таким образом, вы должны иметь возможность вызывать wp.customize()
wp.customize
с переменными-членами и функциями. Таким образом, они должны быть доступны, например, wp.customize.get()
wp.customize
также содержит классы и типы, такие как Setting
, так что вы не сможете делать
function xxx (a: wp.customize.Setting){
Я не знаю, как сделать все это одновременно. Я не являюсь автором библиотеки, поэтому я никоим образом не могу ее изменить, я просто хочу создать для нее типографию. Я сделал следующее:
// index.d.ts
import {Customize} from './Customize';
declare const customize: Customize;
export = customize;
// Customize.d.ts
export interface Customize extends Values {
Setting: typeof Setting;
get(): any;
}
В идеале я хотел бы импортировать наборы так же, как реализованы другие наборы WordPress, но это не является строго необходимым:
declare const wp: {
customize: typeof import("wordpress__customize");
};
Однако, тогда я не могу использовать типы, такие как wp.customize.Setting
. Я получаю error TS2503: Cannot find namespace 'wp'.