我已经提到了其他答案,但无法解决我的问题
console.log(`home.ts : ${result} : ${typeof result},${typeof this.points}`);
返回
home.ts : 50 : number,number
但这一行
this.points = result;
引发以下错误:
打字稿错误:类型“{}”不能指定为“数字”类型。
全功能
getdefaultscore(){
this.authService.getdefaultscore().then(
(result)=>{
console.log(`home.ts : ${result} : ${typeof result},${typeof this.points}`);
this.points = result;
},
(err)=>{
this.authService.alertnointernetconnection();
}
)
}
this.points
定义为数字。
getdefaultscore()的定义
getdefaultscore(){
return new Promise((resolve, reject)=>{
let headers = new Headers();
headers.append('Content-Type','application/json');
this.http.post('mysite.com/ionuserpoint.php',JSON.stringify({defaultpoints:true}),headers)
.subscribe(
(res) =>{
let data = res.json();
data = parseFloat(data);
alert(`defaults points : ${data}`);
resolve(data);
},
(err) =>{
reject(err);
}
);
});
}
我在mysite.com之前删除了http://www,因为stackoverflow会抛出一些错误。
答案 0 :(得分:1)
问题在于class Cooper():
def __init__(self):
...create all 'private' attributes
@classmethod
def Dougie(cls,data,datatype):
inst = cls.__new__(cls)
setattr(inst,datatype,data)
return inst
@property
def datatype1(self):
return self._datatype1
@datatype1.setter
def datatype1(self,newdata):
self._datatype1,self._datatype2,... = updatedata1(newdata)
@property
def datatype2(self):
return self._datatype2
@datatype2.setter
def datatype2(self,newdata):
self._datatype1,self._datatype2,... = updatedata2(newdata)
... to be continued...
,理想情况下会返回getdefaultscore
,您应该将其更改为Promise<{}>
。由于您没有提供Promise<number>
的代码,因此很难说您应该在那里做出哪些更改。要解决呼叫方的问题,您可以手动输入结果:
getdefaultscore
您可以在Typescript中考虑的另一个版本是使用async / await来简化declare function getdefaultscore(): Promise<{}>; // Dummy declaration
var points : number;
function x() {
getdefaultscore().then((result: number)=>{
points = result;
},
(err)=>{
})
}
代码:
Promise
修改:您在原始答案后添加了async function x2() {
try {
points = <number>await getdefaultscore()
} catch (ex) {
}
}
。由于您手动创建了promis,因此只需将其键入getdefaultscore
。