使用TypeScript时should.js报错:Property 'should'不存在于string[]类型
在TypeScript中使用should.js的解决方案
你遇到的Property 'should' does not exist on type 'string[]'错误,本质是TypeScript不知道should.js给原生JavaScript类型(比如数组、对象)扩展的should属性。下面是具体的解决步骤:
第一步:安装should.js的类型定义包
should.js本身没有自带TypeScript类型声明,所以需要安装社区维护的类型包。在终端运行:npm install --save-dev @types/should # 或者用yarn yarn add --dev @types/should # 或者pnpm pnpm add -D @types/should第二步:让TypeScript识别should.js的类型
有两种方式可以实现:- 单文件导入:在你写测试的文件顶部添加导入语句,引入should.js的类型和扩展:
import 'should'; - 全局配置:如果你的项目里多个测试文件都要用should.js,可以在
tsconfig.json的compilerOptions中添加types字段,把should加进去,这样所有文件都会自动识别:{ "compilerOptions": { // 其他配置... "types": ["should"] } }
- 单文件导入:在你写测试的文件顶部添加导入语句,引入should.js的类型和扩展:
第三步:确保should.js被正确加载
因为should.js是通过修改原生对象原型链来添加should属性的,所以需要在项目的测试入口(比如setupTests.ts)或者每个测试文件中导入一次should.js,让扩展生效:// 导入should.js,触发原型链扩展 import 'should'; // 现在就可以正常使用should断言了 Object.keys(res.body.data).should.containEql('id');
这样修改后,TypeScript就能识别should属性,错误也就消失了。
内容的提问来源于stack exchange,提问作者Shamoon
相关产品推荐
相关产品推荐

