声明一个既是类型又是值的打字稿模块

时间:2020-04-10 18:21:05

标签: javascript wordpress typescript typescript-typings

我正在为WordPress wp.customize API进行输入。但是,我遇到了一个麻烦,而且不知道如何声明顶层导出。

问题如下:

  • wp.customize扩展了一个名为Values的类,该类在“模块”中定义。最重要的是,该类具有呼叫签名(因为它实际上不是打字稿类,而是无数可怕的JS hacks)。因此,您需要能够致电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'.

0 个答案:

没有答案