类型 'JQueryPromise<unknown>' 不可分配给类型 'JQueryPromise<string>'
Type 'JQueryPromise<unknown>' is not assignable to type 'JQueryPromise<string>'
我在 $deferred.promise();
收到关于“'unknown' 不可分配给类型 'string'”的错误。我可以将其设置为字符串吗?
Error TS2322 (TS) Type 'JQueryPromise<unknown>' is not assignable to type 'JQueryPromise<string>'.
Type 'unknown' is not assignable to type 'string'.
this.cyclesService
.compileCycle(cycle, allIndications, regimenPart.Cycles)
.done((value) => {
cycle.Sentence.CompiledText = value;
});
public compileCycle(cycle: Models.Regimen.CycleModel, indications: Models.Indications.IndicationModel[], context: Models.Regimen.CycleModel[]): JQueryPromise<string> {
var requestData = { Cycle: cycle, Indications: indications, Context: context };
var $deferred = $.Deferred();
$.ajax({
async: true,
type: 'post',
data: JSON.stringify(requestData),
contentType: 'application/json',
url: this.apiUrls.CompileCycle,
})
.done((response) => {
var value = response.Value;
if (value.length > 0) {
value = value.charAt(0).toUpperCase() + value.slice(1);
}
$deferred.resolve(value);
})
.fail(() => {
$deferred.reject();
});
return
$deferred.promise();
}
[HttpPost]
public IHttpActionResult CompileCycle([FromBody]CycleSentenceRequest request)
{
request.Cycle.Sentence.Indications = request.Indications.ToList();
request.Cycle.Sentence.Context = request.Context?.ToList();
request.Cycle.Sentence.SequenceOrder = request.Cycle.SequenceOrder;
return Ok(new { Value = request.Cycle.Sentence.CompiledText, ValueInContext = request.Cycle.Sentence.CompiledTextInContext });
}
我相信如果像这样实例化延迟对象,它会有正确的类型:
var $deferred = $.Deferred<string>();
// now typeof $deferred.promise() is JQueryPromise<string>
顺便说一句,这个:
return
$deferred.promise();
本质上是这样的:
return undefined;
// $deferred.promise(); <- dead code, the method already returned
请确保不要在 return
语句后立即换行。
我在 $deferred.promise();
收到关于“'unknown' 不可分配给类型 'string'”的错误。我可以将其设置为字符串吗?
Error TS2322 (TS) Type 'JQueryPromise<unknown>' is not assignable to type 'JQueryPromise<string>'.
Type 'unknown' is not assignable to type 'string'.
this.cyclesService
.compileCycle(cycle, allIndications, regimenPart.Cycles)
.done((value) => {
cycle.Sentence.CompiledText = value;
});
public compileCycle(cycle: Models.Regimen.CycleModel, indications: Models.Indications.IndicationModel[], context: Models.Regimen.CycleModel[]): JQueryPromise<string> {
var requestData = { Cycle: cycle, Indications: indications, Context: context };
var $deferred = $.Deferred();
$.ajax({
async: true,
type: 'post',
data: JSON.stringify(requestData),
contentType: 'application/json',
url: this.apiUrls.CompileCycle,
})
.done((response) => {
var value = response.Value;
if (value.length > 0) {
value = value.charAt(0).toUpperCase() + value.slice(1);
}
$deferred.resolve(value);
})
.fail(() => {
$deferred.reject();
});
return
$deferred.promise();
}
[HttpPost]
public IHttpActionResult CompileCycle([FromBody]CycleSentenceRequest request)
{
request.Cycle.Sentence.Indications = request.Indications.ToList();
request.Cycle.Sentence.Context = request.Context?.ToList();
request.Cycle.Sentence.SequenceOrder = request.Cycle.SequenceOrder;
return Ok(new { Value = request.Cycle.Sentence.CompiledText, ValueInContext = request.Cycle.Sentence.CompiledTextInContext });
}
我相信如果像这样实例化延迟对象,它会有正确的类型:
var $deferred = $.Deferred<string>();
// now typeof $deferred.promise() is JQueryPromise<string>
顺便说一句,这个:
return
$deferred.promise();
本质上是这样的:
return undefined;
// $deferred.promise(); <- dead code, the method already returned
请确保不要在 return
语句后立即换行。