打字稿错误:类型“{}”不能指定为“数字”类型

时间:2017-09-06 08:45:23

标签: angular typescript ionic-framework

我已经提到了其他答案,但无法解决我的问题

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会抛出一些错误。

1 个答案:

答案 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