【问题标题】:How do I write a type definition for a TypeScript library that only exposes one constructor function?如何为仅公开一个构造函数的 TypeScript 库编写类型定义?
【发布时间】:2019-12-12 02:57:25
【问题描述】:

我正在尝试为this Splitwise NodeJS library 编写类型定义。我最初是这样写的:

declare module 'splitwise' {
    export function Splitwise(data: {
        consumerKey: string,
    }): SplitwiseObj;

    export class SplitwiseObj {
        public getCurrentUser(): Promise<SplitwiseUser>;
    }

    export interface SplitwiseUser {}
}

但是,库本身实际上是一个函数。我的类型定义目前暗示:

const splitwise = require('splitwise');
const swObj = splitwise.Splitwise({consumerKey: ...})

实际上应该是:

const Splitwise = require('splitwise');
const swObj = Splitwise({consumerKey...});

如何在.d.ts 文件中表明被声明的模块本身就是一个函数?

【问题讨论】:

  • 你试过export default Splitwise;吗? (并从export function Splitwise 中删除export

标签: typescript typescript-typings definitelytyped .d.ts


【解决方案1】:

您可以将 sn-p 中的 export interface SplitwiseUser {} 替换为:

interface SplitwiseUser {}

export = SplitwiseUser;

来自official docs

CommonJS 和 AMD 通常都有导出对象的概念,它包含一个模块的所有导出。

它们还支持将导出对象替换为自定义单个对象。默认导出旨在替代此行为;然而,两者是不相容的。 TypeScript 支持export = 对传统的 CommonJS 和 AMD 工作流程进行建模

【讨论】:

    猜你喜欢
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多