我试图在打字稿中使用chai,但我无法按照我的预期使任何断言正常工作。
的package.json
"dependencies": {
"@types/chai": "^4.0.1",
"@types/mocha": "^2.2.41",
"chai": "^4.1.0",
"mocha": "^3.4.2",
"typescript": "2.4.2"
}
所有这些都会发出编译器错误:
import * as chai from 'chai';
const expect = chai.expect;
const assert = chai.assert;
const expect = chai.expect;
expect(myVar).to.be.empty();
expect(myVar).to.be.empty;
expect(myVar).to.be.undefined();
expect(myVar).to.be.undefined;
如果我尝试直接导入断言 - 我不会将empty()视为有效的断言:
const assert = chai.assert;
assert.empty??? not there?
欢迎任何想法。
谢谢 - 乍得
快速回答
Shaun指出以下内容 - 将导入更改为:
import { assert, expect } from 'chai';
谢谢肖恩
答案 0 :(得分:0)
不幸的是,isEmpty(...)
的类型不包括assert
;那will probably change for 4.0.3
。在此期间,我们可以投射assert as any
并致电isEmpty(...)
。
安装好类型后,这可能适用于您:
import chai = require("chai");
const assert = chai.assert;
const expect = chai.expect;
expect("").to.be.empty;
expect(undefined).to.be.undefined;
(assert as any).isEmpty("");
另一种选择是在导入时进行解构:
import { assert, expect } from "chai";
expect("").to.be.empty;
expect(undefined).to.be.undefined;
(assert as any).isEmpty("");
以下是VSCode中的外观。
答案 1 :(得分:0)
Shaun的回答的补充:如果您需要导入应该 Chai接口...
import { assert, expect } from "chai"; //Import the Expect & Assert Interfaces
import 'chai/register-should'; // Import the Should Interface