Opting in to getter/setter usage still fails with 'Contravariant property incompatible with covariant use'
- Lingua principale
- Rust
- Stelle
- 22.3k
- Fork
- 1.9k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Flow version 0.37.4.
In the following code:
```
import appendQuery from 'append-query';
import { join } from 'path';
import TypeCastError from './errors/TypeCastError';
export type VersionableArgs = {
instanceId: string,
version: number
};
export default class Versionable {
instanceId: string;
version: number;
constructor(args: VersionableArgs) {
this.instanceId = args.instanceId;
this.version = args.version;
}
set instanceId(val: any) {
if (typeof val !== 'string') throw new TypeCastError('instanceId is expected to be a string');
this.instanceId = val;
}
toUrl(basePath: string) {
let x: string = join(basePath, this.instanceId);
return appendQuery(x, {
version: this.version
});
}
}
```
running `flow check` errors out with:
```
Potentially unsafe get/set usage. Getters and setters with side effects are potentially unsafe and disabled by default. You may opt-in to using them anyway by putting `unsafe.enable_getters_and_setters=true` into the [options] section of your .flowconfig.
```
Opting in to getter and setter usage still fails with:
```
src/Versionable.js:36
36: let x: string = join(basePath, this.instanceId);
^^^^^^^^^^^^^^^ property `instanceId`. Contravariant property `instanceId` incompatible with covariant use in
36: let x: string = join(basePath, this.instanceId);
^^^^^^^^^^^^^^^ property `instanceId`
```
`this.instanceId` is a `string` and `join` takes var args of type `string`… why does this error out?
I am side-stepping the issue with a `// $FlowIssue` comment before `join` usage.
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.