2017-08-10 192 views
1

我想在打字稿中使用chai,並且我無法獲得任何斷言以按我期望的方式工作。Typescript @ types/chai - 你如何使用Chai.Assertion?

的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; 

如果我嘗試直接導入斷言 - 我不看空()作爲一個有效的斷言:

const assert = chai.assert; 
assert.empty??? not there? 

歡迎任何想法。

謝謝 - 乍得


快速回答

肖恩指出如下 - 更改導入到:

import { assert, expect } from 'chai'; 

感謝肖恩

回答

1

不幸的是,該類型做不包括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

+0

感謝肖恩 - 我明確地談論那些類型的那些:斷言的 - 像真正的:斷言; false:斷言; null:斷言; undefined:斷言; NaN:斷言; NaN:斷言; 存在:斷言; 空:斷言; ;;;;我有平等和其他工作很好 – chadbr

+0

@chadbr謝謝你讓我知道。我已經相應地更新了我的答案。 –

+1

在進口解構做了詭計!它打破了tslint - 但我可以添加一個忽略。有趣的一面是,我在幾個月前試過了,它不起作用 - 所以我甚至沒有再嘗試。謝謝Shaun。 – chadbr