打字稿不是类型转换

时间:2017-08-17 17:10:39

标签: javascript reactjs typescript

我正在尝试从处于反应状态的对象调用函数

//currentUser is of type User
this.state.currentUser.rankUp()

但它只是错误this.state.currentUser.rankUp is not a function。如果我创建一个新的用户对象虽然它确实允许我调用所述函数。即使我尝试将其作为用户:var user:User = this.state.currentUser as User投射,然后调用该函数它会给出相同的错误。我尝试打印类型,甚至在投射它时它返回 object 而不是User

到目前为止,我设法让它工作的唯一方法是user.rankUp = (new User("a")).rankUp;即使它有效也感觉不正确。

修改

User.rankUp定义为:

rankUp(){
    this.rank +=1;
}

1 个答案:

答案 0 :(得分:1)

  

即使我尝试将其作为用户进行转换:var user:User = this.state.currentUser as User然后调用该函数也会产生相同的错误。

TypeScript没有类型转换。它有类型断言:https://basarat.gitbooks.io/typescript/docs/types/type-assertion.html

  

之所以没有被称为"类型铸造"是铸造通常意味着某种运行时支持。但是,类型断言纯粹是一个编译时构造,也是一种为编译器提供关于如何分析代码的提示的方法。

所以回答你的问题:

  

打字稿不是类型转换

因为没有类型转换。