2017-08-10 17 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; 

私が直接、アサーションをインポートしよう - 私は空に表示されていない()の有効なアサーションとして:

アイデアは大歓迎です。

おかげ - チャド


クイック答えショーンは、以下の指摘

- へのインポートを変更します。

import { assert, expect } from 'chai'; 

感謝ショーン

答えて

1

残念ながら、種類が行いますは含まれません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:アサーション。 未定義:アサーション。 NaN:アサーション。 が存在する:アサーション; 空:アサーション。 ;;;;私は平等と他の正常な仕事を持っています – chadbr

+0

@chadbr私に知らせてくれてありがとう。私はそれに応じて私の答えを更新しました。 –

+1

インポート時に破棄されたトリックでした!それはtslintを破る - しかし、私はそれを無視することができます。面白いのは、私は数ヶ月前にそれを試してみましたが、うまくいかなかったので、もう一度やり直してもいませんでした。 Shaunに感謝します。 – chadbr

関連する問題