ts2339:属性“应该”不会对类型蓝鸟存在

ts2339:属性“应该”不会对类型蓝鸟存在<boolean>

问题描述:

,我写我的摩卡试验打字稿,现在我编译它在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(); 

,但 '应该' 史迪威撑下划线为错误。

+1

嗯,我从来没有与'应该'在打字稿的情况下工作,但'期望'工作正常。顺便说一句。您的代码示例与测试以及您以后添加的导入看起来不匹配(因为您在示例中导入'assert') – Rhayene

+0

'expect'对我来说不起作用(在这种情况下)。就像我说的'应该'正在工作,并没有在控制台中的错误,但它只是被强调为Webstorm中'应该'不存在(在本例中)'expectedValue'或true,或任何其他WebStorm错误告诉我'应该'不存在。 –

好的,我解决了这个问题。

解决这个问题的第一种方法(使用破解):
问题在于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);