- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
import { Request as ExpressRequest, Response as ExpressResponse } from 'express';
declare module 'kvl' {
export = kvl;
}
declare const kvl: {
ValidationDone:(param:(error: any, response: ExpressResponse) => void) => void;
}
模块扩充中不允许导出和导出分配。
我是在.d.ts里声明的,这样用不行吗?
最佳答案
模块增强:
Typescript 将此称为模块扩充:您正在使用现有模块并向其添加新定义。模块扩充有自己的语法:
按照文档,你的代码变成这样:
// file1.ts
import { Request as ExpressRequest, Response as ExpressResponse } from 'express';
// module name must be "express"
declare module 'express' {
// this can't be an export
const kvl : {
ValidationDone:(param:(error: any, response: ExpressResponse) => void) => void;
}
}
现在您已经扩充了 express
模块并可以像这样使用它:
// file2.ts
import {kvl} from "express";
// ...
模块化声明文件:
如果您不想将新类型注入(inject)到 express 模块中,您可以为新模块使用声明文件。有多种类型,可以在这里找到一个很好的概述:https://www.typescriptlang.org/docs/handbook/declaration-files/library-structures.html
基本上,您必须检查代码是如何使用的,然后根据它调整您的声明。在您的情况下,您似乎想要将 kvl
作为模块导入。因此,您可以根据此示例文件定位自己:https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-d-ts.html
我已将您的代码更改为适当的语法。顺便说一句,这只在 .d.ts 文件中是正确的:
//kvl.d.ts
import { Request as ExpressRequest, Response as ExpressResponse } from 'express';
export as namespace kvl;
export const kvl : {
ValidationDone:(param:(error: any, response: ExpressResponse) => void) => void;
};
实现模块:
如果kvl
是您自己的代码,那么您不必使用声明文件。 Typescript 可以分析你的模块。生成具有正确类型的 kvl 常量的模块定义可能如下所示:
// kvl.ts
import { Request as ExpressRequest, Response as ExpressResponse } from 'express';
export const kvl : {
ValidationDone:(param:(error: any, response: ExpressResponse) => void) => void;
} = {ValidationDone: function(param){}};
请注意,模块自动将其文件名作为模块名。因此,上面的代码应该在一个名为 kvl.ts 的文件中。
关于typescript - 模块扩充中不允许导出和导出分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53186841/
我正在尝试填充一个 ListView ,其中每一行都有 2 个 TextView 和一个按钮。我想我几乎让它正常工作,但现在 ListView 只显示 ListView 中的 1 个项目并忽略其他数据
是否可以通过向 DOM 元素添加新属性来扩充普通 JavaScript 对象?例如,我们能否为按钮或输入添加一个新属性,比如一个指示用户最后一次点击它的时间的值? 最佳答案 是的。有时您会发现它被描述
我的要求是能够快速检索树中的最小值和最大值。 (注意,不是最小/最大 key ,而是卫星数据的最小/最大)。 树将基于字符串作为键,每个节点将存储一个整数。这个整数必然会改变并不断更新。键保持固定 我
我正在浏览 Introduction to Algorithms by Cormen第 14 章(增强数据结构),他在其中谈论区间树。下面是他提到的区间树背后的设计方法。 Step 1: Underl
我知道如何为每个对象添加新方法 - 通过扩充对象的原型(prototype): Object.prototype.foo = function() { }; 但是,是否可以只为 DOM 元素节点定义
我正在开发一个已经在 Kaggle 实现的项目这与图像分类有关。我总共有 6 个类别要预测,分别是愤怒、快乐、悲伤等。我已经实现了 CNN 模型,目前仅使用 4 个类别(图像数量最多的类别),但我的模
在我的 NativeScript 项目中,我想包含来自 Android 支持库的 RecyclerView。我将依赖项包含在 app/App_Resources/Android/app.gradle
我正在创建一个使用 twitter api 的应用程序。 我正在检索推文并向用户展示。 在某些情况下,推文有链接,如下图所示。 阅读 twitter 的 api 文档,我发现了一个叫做“增强 URL
我正在阅读JavaScript the good parts这本书,看到了以下代码: Function.prototype.method = function (name, func) { this
我有一个按钮 View 。我是否必须将它包装在 Layout 中以便能够在 Activity 中膨胀它的实例? View 是否有类似的模式,以便我可以声明性地设置一次,然后创建它的多个实例? 谢谢。
我在数据库的 BLOB 字段中有一个 zip 流。我正在尝试给它充气,但到目前为止还做不到。 问题是这个流是一个压缩流,而不是一个完整的压缩文件。 如果清楚的话,这将是对其进行膨胀的 Java 代码:
我是一名优秀的程序员,十分优秀!