Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 条纹&x2B;TypeScript:如何扩展条带节点的@types/stripe定义?_Node.js_Typescript_Stripe Payments - Fatal编程技术网

Node.js 条纹&x2B;TypeScript:如何扩展条带节点的@types/stripe定义?

Node.js 条纹&x2B;TypeScript:如何扩展条带节点的@types/stripe定义?,node.js,typescript,stripe-payments,Node.js,Typescript,Stripe Payments,我正在做一个项目,我们正在为节点使用条带库。我们还想在这个项目上使用TypeScript 我发现Stripe没有提供正式的TypeScript定义,但我在NPM上找到了一些社区定义。所以我安装了它们,过了一段时间我发现了一个错误: 类型“Stripe”上不存在属性“sources”。 这里缺少一些定义,比如这个 我想在本地添加缺少的定义。因此,我需要扩展此文件: 我认为对于上述问题,我需要: 添加属性源:Stripe.resources.sources到类条带 要将类源添加到命名空间资源 向

我正在做一个项目,我们正在为节点使用条带库。我们还想在这个项目上使用TypeScript

我发现Stripe没有提供正式的TypeScript定义,但我在NPM上找到了一些社区定义。所以我安装了它们,过了一段时间我发现了一个错误:
类型“Stripe”上不存在属性“sources”。

这里缺少一些定义,比如这个

我想在本地添加缺少的定义。因此,我需要扩展此文件:

我认为对于上述问题,我需要:

  • 添加属性
    源:Stripe.resources.sources到类
    条带
  • 要将类
    添加到命名空间
    资源
  • 向类
    源添加缺少的函数声明

问题是我真的不知道怎么做。扩展名为
.d.ts
的文件应该是什么样子?我根据一些示例和TypeScript文档做了很多尝试,但总是不起作用。你有什么想法吗?

我不相信有办法增加指定的导出
Stripe
类;问题类似于关于扩充默认导出类。此时,由于您不能使用增强功能,您必须为您的项目提供
@types/stripe
定义,然后您还可以通过这种方式进行所有所需的更改。

我想我的同事已经找到了适合我的解决方案。他是如何做到这一点的:

import ST from 'stripe'

declare module 'stripe' {
    namespace sources {
        interface ISource extends IResourceObject {
            ...
        }

        interface ISourceCreationData {
            ...
        }
    }

    namespace resources {
        class Sources {
            create(data: sources.ISourceCreationData): Promise<sources.ISource>;
            retrieve(source: string, client_secret?: string): Promise<sources.ISource>;
        }
    }

    class Stripe extends ST {
        sources: ST.resources.Sources;
    }
}
从“条带”导入ST
声明模块“条带”{
名称空间源{
接口ISource扩展了IResourceObject{
...
}
接口ISourceCreationData{
...
}
}
命名空间资源{
类源{
创建(数据:sources.isosourcereationdata):承诺;
检索(来源:string,client\u secret?:string):承诺;
}
}
类Stripe扩展了ST{
资料来源:ST.resources.sources;
}
}

我尝试了这个方法,但仍然得到一个错误,
sources
属性丢失。