首页 > 解决方案 > 指定类的构造函数参数

问题描述

我在经典的 ES6 npm 包中有一个这样的 ES6 类:

class Document {
  /**
   *
   * @param {Object} options
   * @param {String} [options.title]
   * @param {String} [options.type]
   * @param {String} [options.detail]
   * @param {String} [options.instance]
   * @param {Number} [options.status]
   * @param {Extension} [extension]
   */
  constructor (options, extension) { // some implementation ... }
}

现在我想为该类提供一些 TypeScript 类型。

我试过了,但被 WebStorm 或 VS Code 等忽略了optionsextension

declare module "myModule" {

    class Document implements IDocument {
        constructor(options: IDocumentOptions, extension: IExtension)

        detail: string;
        extension: IExtension;
        instance: string;
        status: number;
        title: string;
        type: string;
    }

    interface IDocument {
        title: string,
        type: string,
        detail?: string,
        instance?: string,
        status: number,
        extension?: IExtension
    }

    interface IDocumentOptions {
        title: string,
        type: string,
        detail?: string,
        instance?: string,
        status: number,
        extension?: IExtension
    }

    interface IExtension {

    }

    const _: {
        Document: Document
    }


    export = _;

    }
};

标签: typescripttypescript-typings

解决方案


我猜您正在尝试覆盖现有的 Document 变量。

declare var Document: {
    prototype: Document;
    new(): Document;
};

只是你必须重命名你的类并添加构造函数实现,最后它应该可以工作


推荐阅读