我收到一個$deferred.promise();關于“'unknown' is notassignable to type '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 });
}
uj5u.com熱心網友回復:
我相信如果像這樣實體化延遲物件,它將具有正確的型別:
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宣告后立即換行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/481025.html
上一篇:此切換運算子語法的名稱
下一篇:使用打字稿不顯示預覽影像
