Typescript @ types / chai - 你如何使用Chai.Assertion?

时间:2017-08-10 02:50:15

标签: typescript chai

我试图在打字稿中使用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';

谢谢肖恩

2 个答案:

答案 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中的外观。

enter image description here

答案 1 :(得分:0)

Shaun的回答的补充:如果您需要导入应该 Chai接口...

import { assert, expect } from "chai"; //Import the Expect & Assert Interfaces
import 'chai/register-should'; // Import the Should Interface 

参考; Importing Chai in Typescript

https://www.chaijs.com/guide/styles/#should