我正在尝试从处于反应状态的对象调用函数
//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;
}
答案 0 :(得分:1)
即使我尝试将其作为用户进行转换:var user:User = this.state.currentUser as User然后调用该函数也会产生相同的错误。
TypeScript没有类型转换。它有类型断言:https://basarat.gitbooks.io/typescript/docs/types/type-assertion.html
之所以没有被称为"类型铸造"是铸造通常意味着某种运行时支持。但是,类型断言纯粹是一个编译时构造,也是一种为编译器提供关于如何分析代码的提示的方法。
所以回答你的问题:
打字稿不是类型转换
因为没有类型转换。