파일에 정의 된 클래스 (이 예제에서는 B
)가 있고이 클래스는 b.js.flow
파일에 정의되어 있습니다. 나는 그것의 선언과 클래스를 flowtype 연관 가정,하지만 난 그게 방법 flowtype의 내부 클래스 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 :
(210)// @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;
}