从其他开发人员那里获得了项目,他们已经正确地进行了编译,我在“ return deferred.promise()”行的打字稿中有一个错误。
类型'JQueryPromise <{}>'不能分配给类型'JQueryPromise'。
def TestCase = testRunner.getTestCase()
def CurrentTestStep =
context.testCase.getTestStepAt(context.getCurrentStepIndex()).getLabel()
def StepList = TestCase.getTestStepList().name - CurrentTestStep
def ResponseTime = 0
def RequestSize = 0
def ResponseSize = 0
StepList.each
{
Step ->
try
{
log.info "Size of " + Step + "is " + testRunner.testCase.testSteps[Step].testRequest.response.responseSize
ResponseSize= ResponseSize + testRunner.testCase.testSteps[Step].testRequest.response.responseSize
}
catch(Exception e)
{
}
}
testRunner.testCase.setPropertyValue("Test_Case_Response_Size", ResponseSize.toString())
有很多这样的错误,所以我认为问题不在代码中,而是在某些配置中,怎么回事?
答案 0 :(得分:2)
似乎您只需要将正确的类型传递给Deferred
工厂。这段代码编译:
export function promise<T>(resolver: (resolve: (data: T) => void, reject: (error: any) => void) => void): JQueryPromise<T> {
const deferred = $.Deferred<T>(); // here we used generic type for Deferred
resolver(
data => {
deferred.resolve(data);
},
ex => {
deferred.reject(ex);
}
);
return deferred.promise();
}
尽管如此,我不确定此问题是否正在干扰.NET细节。
答案 1 :(得分:0)
对于不使用泛型的代码,我有几乎相同的错误消息,但不是
类型'JQueryPromise <{}>'不能分配给类型'JQueryPromise'
说
类型'JQueryPromise <{}>'不可分配给类型'IAccountSettings'。
其中IAccountSettings显然是我的类型,或者在这种情况下是接口。在上述Cerberus的出色回答的基础上,我通过仅输入以下特定类型来更改了deferd的声明:
public get(): JQueryPromise<IAccountSettings> {
var deferred = $.Deferred<IAccountSettings>();