2017-08-10 1 views
1

Je suis en train d'utiliser chaï dactylographiée et je ne peux pas obtenir l'une des affirmations de travailler comme je l'attendre.Typescript @ types/chai - Comment utilisez-vous 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" 
} 

Toutes ces erreurs émettent du compilateur:

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; 

Si je tente d'importer directement des affirmations - comme l'affirmation valide, je ne vois pas vide():

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

Toutes les idées sont les bienvenues.

Merci - Tchad


réponse rapide

Shaun indique ci-dessous - changer l'importation:

import { assert, expect } from 'chai'; 

Merci Shaun

Répondre

1

Malheureusement, les types font ne pas inclure isEmpty(...) pour le assert; que will probably change for 4.0.3. En attendant, nous pouvons jeter assert as any et appeler isEmpty(...) sur ce point.

Une fois que vous avez les types installés, cela pourrait fonctionner pour vous:

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(""); 

Une autre alternative est déstructurant importation:

import { assert, expect } from "chai"; 

expect("").to.be.empty; 
expect(undefined).to.be.undefined; 
(assert as any).isEmpty(""); 

Voici comment les regarder dans VSCode.

enter image description here

+0

Merci Shawn - Je parlais explicitement de ceux qui sont tapés comme: Affirmation de - comme vrai: Assertion; false: assertion; null: assertion; undefined: Assertion; NaN: assertion; existent: Assertion; vide: assertion; ;;;; J'ai égal et d'autres fonctionnent bien – chadbr

+0

@chadbr Merci de me le faire savoir. J'ai mis à jour ma réponse en conséquence. –

+1

déstructuration à l'importation a fait l'affaire! ça casse tslint - mais je peux ajouter un ignorer pour ça. Le côté intéressant est que j'ai essayé cela il y a quelques mois et cela n'a pas fonctionné - donc je n'ai même pas essayé encore. merci beaucoup Shaun. – chadbr