我在b.js
文件中定義了一些類(在本例中它被命名爲B
),它的聲明在b.js.flow
文件中定義。我認爲流動型類與它的聲明相關聯,但不幸的是,當我嘗試使用一些功能,它接受B
類裏面的方法流動型的情況下提出以下錯誤:Flowtype類聲明與它的實現不兼容
b.js:9
9: return this.a.foo(this)
^^^^^^^^^^^^^^^^ call of method `foo`
5: export default class B {
^B. This type is incompatible with
6: foo(b: B): null;
^B. See: a.js.flow:6
我猜它是由treating classes as nominal types引起。有沒有辦法將類的實現與它的聲明聯繫起來以防止這個錯誤?
還有我已經用於測試文件的全部內容:
a.js:
// @flow
import type B from './b'
export default class A {
foo(b: B) {
return null
}
}
a.js.flow:
// @flow
import type B from './b'
declare export default class A {
foo(b: B): null;
}
b.js:
// @flow
import A from './a'
export default class B {
a: A;
bar() {
return this.a.foo(this)
}
}
b.js.flow:
// @flow
import type A from './a'
declare export default class B {
a: A;
bar(): null;
}