如何将打字稿类型添加到导出类的 NPM 模块?

赞德

我希望我的design-systems-utils模块包含 Typescript 类型,即使源代码不是使用 Typescript 编写的(我已经看到其他人已经这样做了)。

我已经在这里尝试,但它不起作用。顺便说一句,我的模块导出了一个类......

declare class DesignSystem {
    constructor(system: object, options?: object);
    multiply(initial: number, multiplier: number): any;
    get(val: string): any;
    bp(bp: string): any;
    z(z: string): any;
    fontSize(size: string|number, toPxl?: boolean): string;
    fs(size: string|number, toPxl?: boolean): string;
    spacing(index: number): string;
    space(index: number): string;
    toPx(value: number, base: number, unit?: string): string;
    pxTo(value: number, base: number): string;
    color(hue:string, value:string): string;
    designSystem: object;
    interface options {
        defaultUnit: string,
        useModularScale: boolean,
        fontSizeUnit: string
    }
}

我还看到我应该将其作为模块导出,如下所示:

declare module "DesignSystem" {
    export default class DesignSystem {
        constructor(system: object, options?: object);
        /*~ Multiply two items together */
        multiply(initial: number, multiplier: number): any;
        get(val: string): any;
        bp(bp: string): any;
        z(z: string): any;
        fontSize(size: string|number, toPxl?: boolean): string;
        fs(size: string|number, toPxl?: boolean): string;
        spacing(index: number): string;
        space(index: number): string;
        toPx(value: number, base: number, unit?: string): string;
        pxTo(value: number, base: number): string;
        color(hue:string, value:string): string;
        designSystem: object;
    }
}

但这也行不通。

任何帮助将不胜感激。

阿维亚德·哈达德

原则上:

declare module "DesignSystem" { ...}

应该更改为您的 npm 模块的名称:

declare module "design-systems-utils" { ...}

这就是您告诉打字稿的方式“这是用户在“从 design-systems-utils”导入...时的类型”。当您需要从“外部”扩展库类型时,这非常有用。

但是,由于您的 package.json 有types: src/index.d.ts字段,我们甚至不需要它。Typescript 已经知道你的d.ts文件为哪个库提供了定义。

export default class DesignSystem {...}

应该够了。

您的第一次尝试声明了一个名为 DesignSystem全局类。一般的经验法则是你d.ts应该反映你的 js 结构。所以如果你export default从 js 文件做,也从d.ts

(另外,感谢您为您的图书馆提供定义,您让世界变得更美好)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将打字稿定义文件添加到npm包中?

来自分类Dev

从打字稿文件生成npm模块

来自分类Dev

如何将NPM模块(十进制)添加到ArangoDB中以进行ACID事务,然后

来自分类Dev

正确的方式将环境模块打包为npm的打字稿

来自分类Dev

如何增加输入的npm模块类型?

来自分类Dev

在命名空间打字稿项目中使用NPM模块

来自分类Dev

您如何找出哪个NPM模块取决于您的模块?

来自分类Dev

如何使Grunt Deploy使用全局NPM模块而不是本地模块

来自分类Dev

将MQTT NPM模块导入NativeScript

来自分类Dev

如何将Scss NPM模块导入Ember

来自分类Dev

我们如何信任npm模块?

来自分类Dev

如何更新npm模块,忽略git repo

来自分类Dev

如何使用npm重建节点模块?

来自分类Dev

如何创建tar-ed npm模块

来自分类Dev

npm如何知道从中安装模块的路径

来自分类Dev

如何使用 html-minifier npm 模块?

来自分类Dev

如何使用请求 npm 模块上传图像?

来自分类Dev

有 npm 模块:如何重试 POST 请求?

来自分类Dev

如何创建“外部模块”打字稿定义文件以包含在npm包中?

来自分类Dev

NPM:更新模块中的模块

来自分类Dev

遇到错误:如何从打字稿中正确使用已翻译和键入的打字稿npm模块?

来自分类Dev

如何将关联添加到模块?

来自分类Dev

如何将模块添加到 nginx 包中

来自分类Dev

如何将样式模块添加到

来自分类Dev

如何导入没有可用类型的 npm 模块?

来自分类Dev

如何使用FPM将全球NPM模块生成为rpm?

来自分类Dev

npm找不到模块

来自分类Dev

使用异步NPM模块

来自分类Dev

使用依赖的npm模块