首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >TypeScript:如何在扩展模块时编写定义?

TypeScript:如何在扩展模块时编写定义?
EN

Stack Overflow用户
提问于 2016-02-29 00:59:43
回答 2查看 2.2K关注 0票数 3

在我的TypeScript测试中,我用一个助手扩展了柴。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import * as chai from 'chai';

chai.use((_chai) => {
  let Assertion = _chai.Assertion;
  Assertion.addMethod('sortedBy', function(property) {
    // ...
  });
});

const expect = chai.expect;

在同一文件中,测试用例使用此方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
expect(tasks).to.have.been.sortedBy('from');

编译器给出的错误是“属性'sortedBy‘在类型’断言‘上不存在”。

如何将sortedBy的声明添加到Chai.Assertion

我尝试过添加模块声明,就像其他柴插件模块一样,但它不起作用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare module Chai {
  interface Assertion {
    sortedBy(property: string): void;
  }
}

我不想让助手成为一个单独的模块,因为它是微不足道的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-29 07:00:13

尝试以下几点:

在chaiExt.ts中扩展chai如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare module Chai 
{
    export interface Assertion 
    {
        sortedBy(property: string): void;
    }
}

在chaiConsumer.ts中消费:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import * as chai from 'chai';
//...
chai.expect(tasks).to.have.been.sortedBy('from');

编辑

如果使用“导入”--将文件转换为外部模块,则不支持声明合并:链接

票数 4
EN

Stack Overflow用户

发布于 2016-02-29 07:11:43

你的代码是正确的。默认情况下,将在TS上打开模块和接口,以便您可以重新声明和扩展它们。

通常,在这种情况下,我要做的是:在与我的项目相同的文件夹中创建一个globals.d.ts文件,以便自动加载.d.ts,然后像您一样添加类型定义。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare module Chai {
  interface Assertion {
    sortedBy(property: string): void;
  }
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35695403

复制
相关文章
使用typescript开发angular模块(编写模块)
之前在使用typescript开发angular模块(发布npm包)一文中基本掌握了怎么发布一个typescript写的npm包。但是离目标还有段距离。
易兒善
2018/08/21
1K0
使用typescript开发angular模块(编写模块)
《现代Typescript高级教程》扩展类型定义
在 TypeScript 中,我们可以通过声明文件(.d.ts 文件)来为现有的 JavaScript 库提供类型定义,或者为现有的类型添加额外的属性和方法。这个过程通常被称为“类型声明扩展”。在这篇文章中,我们将详细探讨如何通过声明文件扩展类型定义。
linwu
2023/07/27
6120
入门 TypeScript 编写 React
Create React App 是一个官方支持的创建 React 单页应用程序的CLI,它提供了一个零配置的现代构建设置。当你使用 Create React App 来创建一个新的 TypeScript React 工程时,你可以运行:
icepy
2019/06/24
5.3K0
TypeScript 之模块
JavaScript 有一个很长的处理模块化代码的历史,TypeScript 从 2012 年开始跟进,现在已经实现支持了很多格式。不过随着时间流逝,社区和 JavaScript 规范已经收敛为名为 ES 模块(或者 ES6 模块)的格式,这也就是我们所知道的 import/export 语法。
玖柒的小窝
2021/12/09
1.1K0
使用 Rollup + TypeScript 编写库
其中,dist 目录一般是通过 Rollup 等打包器打包后的入口文件,一般具有多种格式,以不同后缀命令,如: index.cjs.js index.esm.js。lib 和 esm 目录可以是 TypeScript 编译后生成的文件,目录下的结构基本和原项目结构相同,只是后缀变为 js,lib 一般为 CommonJS 格式,esm 为 ESModule 格式。而这些是一个库最基本的需要发布的文件。
Innei
2021/12/28
2.4K0
编写自己的 TypeScript CLI
Lighthouse 是用于深入了解网页性能的最流行的开发工具之一,它提供了一个CLI 和 Node 模块,因此我们可以以编程方式运行它。但是,如果您在同一个网页上多次运行 LIghthouse,您会发现它的分数会有所不同,那是因为存在已知的可变性。影响 Lighthouse 可变性的因素有很多,处理差异的推荐策略之一是多次运行 Lighthouse。
unkown
2022/02/25
2.4K0
编写自己的 TypeScript CLI
Koa/Express+TypeScript扩展类型
在我们使用Koa或者Express进行开发时会经常使用中间件进行访问权限过滤或者属性加工,很多时候我们需要把中间件的属性传递给下一个路由函数,但是因为TS类型的限制我们无法直接获取扩展的元素或者无法获取正确的类型。本文讲解了在使用Koa/Express+TypeScript开发时如何扩展中间件上的属性。
用户6256742
2022/07/11
8280
Koa/Express+TypeScript扩展类型
快速学习TypeScript——模块
从ECMAScript 2015开始,JavaScript引入了模块的概念。TypeScript也沿用这个概念
玖柒的小窝
2021/11/16
1.2K0
模块_TypeScript笔记13
简单来讲,如果一个文件中含有合法的import或export语句,就会被当做模块(拥有模块作用域),否则就将在运行在全局作用域下。例如:
ayqy贾杰
2019/06/12
7080
使用typescript开发chrome扩展
ianzhi
2023/10/19
6980
使用typescript开发chrome扩展
编写Chrome扩展程序
Chrome的扩展程序很多,也很容易入门,可以来简单实现一下 看看 官方文档 或者翻译的文档:百度、360,慢慢就能实现出一个扩展程序来 每个扩展程序应用一般会包含: 一个manifest清单文件 h
书童小二
2018/09/03
9000
编写Chrome扩展程序
如何编写 Typescript 声明文件
使用TypeScript已经有了一段时间,这的确是一个好东西,虽说在使用的过程中也发现了一些bug,不过都是些小问题,所以整体体验还是很不错的。
贾顺名
2019/12/09
1.9K0
yii2 扩展和自定义(函数 , 组件 , 模块)
自定义辅助函数 入口文件加载 目录下创建一个helpers目录下创建functions.php 文件 <?php if (! function_exists('hello')) { f
botkenni
2019/09/02
1.1K0
如何在CentOS 7上编写自定义系统审计规则
Linux审计系统创建审计跟踪,这是一种跟踪系统上各种信息的方法。它可以记录大量数据,如事件类型,日期和时间,用户ID,系统调用,进程,使用的文件,SELinux上下文和敏感度级别。它可以跟踪文件是否已被访问,编辑或执行。它甚至可以跟踪文件属性的更改。它能够记录系统调用的使用情况,用户执行的命令,登录尝试失败以及许多其他事件。默认情况下,审计系统仅记录日志中的少数事件,例如登录的用户,使用sudo的用户以及与SELinux相关的消息。它使用审计规则来监视特定事件并创建相关的日志条目。可以创建审计规则。
小皇帝James
2018/10/29
4.3K0
Redis 模块机制 - 模块编写篇
在 Redis 应用中,模块机制是提及得比较少的一个功能,主要是 Redis 的功能基本上能应付各种需求,很少需要自己编写模块来扩展功能的。但有时候我们希望为 Redis 提供一些较为高级的功能,比如提供支持回滚的事务功能,这时就需要编写模块来进行扩展。
用户7686797
2020/08/24
1.3K0
TypeScript系列教程四《扩展类型》
TypeScript 最好玩的应该就是类型系统,随意组合创造,提供基础联合类型、交叉类型,还有一系列的高级函数可以玩转类型。
星宇大前端
2021/07/19
1.1K0
TypeScript系列教程四《扩展类型》
深入理解 TypeScript 模块
在程序设计中,为完成某一功能所需的一段程序或子程序,或指能由编译程序、装配程序等处理的独立程序单位;或指大型软件系统的一部分
网罗开发
2021/04/26
2.5K0
深入理解 TypeScript 模块
TypeScript入门——扩展类型之枚举
在上一篇文章中聊到了很多TS基础类型,那为什么又出现了扩展类型枚举,我们都知道任何东西都不是平白无故就出现的,都是为了解决特定的问题。枚举只是扩展类型其中之一,比如说还有类型别名,接口,类
程序员法医
2022/08/11
1K0
TypeScript入门——扩展类型之枚举
EFCore3.1+编写自定义的EF.Functions扩展方法
虽然EF.Functions 提供了很多数据库函数,但是并不全面.比如加密解密..
GuZhenYin
2021/04/16
7700
EFCore3.1+编写自定义的EF.Functions扩展方法
点击加载更多

相似问题

为jquery扩展编写typescript类型定义

112

Typescript:在定义文件中扩展模块

19

扩展typescript模块

16

我应该为我的TypeScript模块编写TypeScript定义吗?

07

用TypeScript编写npm模块

486
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文