在打字稿中导入库时导入变量名与常量变量名
import variableName vs const variableName while importing library in typescript
我正在用 typescript 编写 chai-mocha 测试
import * as chai from 'chai'
const chaiHttp = require('chai-http')
chai.use(chaiHttp)
...
await chai.request('http://localhost:' + config.expressPort)
以上代码报错Property 'request' does not exist on type 'ChaiStatic'
但是如果我像这样更改 chai-http 的导入方式
import chaiHttp = require('chai-http')
代码运行成功。
我从来没有像这样导入过任何库。我想知道这里到底发生了什么。
P.S.: 这是我的测试脚本:
mocha --require ts-node/register test/test.spec.ts -t 5000 --exit
注意:安装@types/chai-http后添加import * as chaiHttp from 'chai-http'
代码,出现错误resolved into a non-module entity and cannot be imported from this construct
我在本地尝试了代码,使用 const 和 import 语句都遇到了同样的错误。
Property 'request' does not exist on type 'ChaiStatic'.
但是生成的js应该是一样的。查看js文件,生成为
var chaiHttp = require("chai-http");
所以问题出在从TS到JS的编译期。为了解决这个问题,我安装了 @types/chai-http
npm install @types/chai-http --save-dev
假设您安装了 @types/chai-http
,import chaiHttp = require('chai-http')
是 a special syntax recognized by TypeScript 导入使用导出分配的 CommonJS 模块。作为导入,它会导致 TypeScript 加载 chai-http
类型声明,其中包括使 chai.request
工作的扩充。在 const chaiHttp = require('chai-http')
中,require('chai-http')
被视为普通函数调用,不会导致 TypeScript 加载 chai-http
类型声明。
我正在用 typescript 编写 chai-mocha 测试
import * as chai from 'chai'
const chaiHttp = require('chai-http')
chai.use(chaiHttp)
...
await chai.request('http://localhost:' + config.expressPort)
以上代码报错Property 'request' does not exist on type 'ChaiStatic'
但是如果我像这样更改 chai-http 的导入方式
import chaiHttp = require('chai-http')
代码运行成功。
我从来没有像这样导入过任何库。我想知道这里到底发生了什么。
P.S.: 这是我的测试脚本:
mocha --require ts-node/register test/test.spec.ts -t 5000 --exit
注意:安装@types/chai-http后添加import * as chaiHttp from 'chai-http'
代码,出现错误resolved into a non-module entity and cannot be imported from this construct
我在本地尝试了代码,使用 const 和 import 语句都遇到了同样的错误。
Property 'request' does not exist on type 'ChaiStatic'.
但是生成的js应该是一样的。查看js文件,生成为
var chaiHttp = require("chai-http");
所以问题出在从TS到JS的编译期。为了解决这个问题,我安装了 @types/chai-http
npm install @types/chai-http --save-dev
假设您安装了 @types/chai-http
,import chaiHttp = require('chai-http')
是 a special syntax recognized by TypeScript 导入使用导出分配的 CommonJS 模块。作为导入,它会导致 TypeScript 加载 chai-http
类型声明,其中包括使 chai.request
工作的扩充。在 const chaiHttp = require('chai-http')
中,require('chai-http')
被视为普通函数调用,不会导致 TypeScript 加载 chai-http
类型声明。