ts2339:属性“应该”不会对类型蓝鸟存在
问题描述:
,我写我的摩卡试验打字稿,现在我编译它在ES6ts2339:属性“应该”不会对类型蓝鸟存在<boolean>
tsc *.ts --target es6 -m commonjs --watch
我没有错误在控制台,
但在WebStorm中,我用红色标出每个'should'chai关键字(当我将它悬停时,我收到一条消息:ts2339:属性'应该'不存在于类型蓝鸟)。
例如我用“薛宝钗”,我要检查预期值true:
import * as chai from "chai";
export class WrapedChai {
public shouldBeTrue(valueToTest : any){
let expectedValue : boolean = true;
expectedValue.should.equal(valueToTest);
}
// or usintg SHOULD with a Promise
public belongsToGLOErrorPromise(valueToTest: any) {
let expectedValue : boolean = true;
return Promise.resolve(expectedValue).should.eventually.equal(valueToTest);
}
}
,并应以红色下划线始终。
我尝试这样做:
import { should } from 'chai';
should();
这:
import chai = require('chai');
var should = chai.should();
,但 '应该' 史迪威撑下划线为错误。
答
好的,我解决了这个问题。
解决这个问题的第一种方法(使用破解):
问题在于TypeScript中的类型。而不是写
return Promise.resolve(isInstance).should.eventually.equal(expectedValue);
的我分成两个部分的线,写这样的:
let helpVariable : any = Promise.resolve(isInstance);
return helpVariable.should.eventually.equal(expectedValue);
这样我applaying应变量的类型是任何。
从某些原因,“应该”被强调作为一个错误,如果它是在任何其他类型的应用(如:布尔,INT,数字,字符串...)
第二种方式来解决这个问题(使用“出口“关键字,而不是 '应当'):
首次导入关键字 '出口' 是这样的:
import {expect} from 'chai';
然后,而不是写:
return Promise.resolve(isInstance).should.eventually.equal(expectedValue);
写:
return export(Promise.resolve(isInstance)).eventually.equal(expectedValue);
嗯,我从来没有与'应该'在打字稿的情况下工作,但'期望'工作正常。顺便说一句。您的代码示例与测试以及您以后添加的导入看起来不匹配(因为您在示例中导入'assert') – Rhayene
'expect'对我来说不起作用(在这种情况下)。就像我说的'应该'正在工作,并没有在控制台中的错误,但它只是被强调为Webstorm中'应该'不存在(在本例中)'expectedValue'或true,或任何其他WebStorm错误告诉我'应该'不存在。 –