【发布时间】:2017-12-13 13:16:17
【问题描述】:
这是我的代码(也可以在 flow.org/try 上查看):
/**
* @flow
*/
class Person {
name: string
constructor(name) {
this.name = name
}
sayHi() {
console.log(`Hi, I'm ${this.name}`)
}
}
const people = {
john: new Person('John Smith'),
jack: new Person('Jack Leonard')
}
Object.values(people).forEach(person => {
person.sayHi() // this line causes an issue with flow
})
它不喜欢我使用person.sayHi() 的事实。我收到此错误:
21: person.sayHi()
^ call of method `sayHi`. Method cannot be called on
21: person.sayHi()
^ mixed
似乎Object.values 返回了Array<mixed> 的类型。我试图对类型进行改进,如下所示:
Object.values(people).forEach(person => {
if (typeof person === 'object' && person != null) {
person.sayHi()
}
})
但是,这仍然会报错:
22: person.sayHi()
^ call of method `sayHi`. Function cannot be called on
[LIB] static/v0.49.1/flowlib/core.js:52: static values(object: any): Array<mixed>;
^ mixed
任何有关使其工作的提示将不胜感激。
【问题讨论】:
-
试试
(Object.values(people): Array<Person>).forEach(person => { person.sayHi() }) -
嗯,流doesn't seem to like那个类型转换。
标签: javascript flowtype