microsoft / microsoft/TypeScript
Incorrectly inferred object property as string literal value
Offen
@RyanCavanaugh arbeitet bereits daran.
Seit 29.6.2020.
Needs Investigation
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Bewertung
Dieses Issue wurde noch nicht bewertet.