microsoft / microsoft/TypeScript
Incorrectly inferred object property as string literal value
Aperta
@RyanCavanaugh ci sta già lavorando.
Dal 29/6/2020.
Needs Investigation
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
TypeScript Version: 3.9.2
Search Terms:
incorrectly inferred string index type
inferred object property in function return type
Expected behavior:
The key values in each Variation should be inferred as string not the literal string value
Actual behavior:
The key values in each Variation are inferred as the literal string value of the first object
Related Issues:
Possibly related: https://github.com/microsoft/TypeScript/issues/38759,
Code
type Variation = {
[testDescription: string]: () => void;
}
export type VariationProvider = {
variations: Variation[];
};
export type VariationProviderFactory = (extras: object) => VariationProvider;
export function createVariationProvider(factory: VariationProviderFactory) {
return factory;
}
createVariationProvider(() => {
return {
variations: [
{
foo: () => {}
},
{
broken: () => {}
},
]
}
})
Output
export function createVariationProvider(factory) {
return factory;
}
createVariationProvider(() => {
return {
variations: [
{
foo: () => { }
},
{
broken: () => { }
},
]
};
});
Compiler Options
{
"compilerOptions": {
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"strictPropertyInitialization": true,
"strictBindCallApply": true,
"noImplicitThis": true,
"noImplicitReturns": true,
"useDefineForClassFields": false,
"alwaysStrict": true,
"allowUnreachableCode": false,
"allowUnusedLabels": false,
"downlevelIteration": false,
"noEmitHelpers": false,
"noLib": false,
"noStrictGenericChecks": false,
"noUnusedLocals": false,
"noUnusedParameters": false,
"esModuleInterop": true,
"preserveConstEnums": false,
"removeComments": false,
"skipLibCheck": false,
"checkJs": false,
"allowJs": false,
"declaration": true,
"experimentalDecorators": false,
"emitDecoratorMetadata": false,
"target": "ES2017",
"module": "ESNext"
}
}
Playground Link: Provided
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Valutazione
Questa issue non è ancora stata valutata.