microsoft / microsoft/TypeScript
Incorrectly inferred object property as string literal value
オープン
@RyanCavanaugh がすでに取り組んでいます。
2020年6月29日 から。
Needs Investigation
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.4k
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 117
説明
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
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
評価
この issue はまだ評価されていません。