Microsoft/TypeScript
Missing property incompatible error when there is a namespace with a value export
开放
#54,131 创建于 2023年5月4日
BugDomain: Index TypesHelp Wanted
仓库指标
- 星标
- (108,860 个星标)
- PR 合并指标
- (PR 指标待抓取)
描述
Bug Report
🔎 Search Terms
index signature, namespace
🕗 Version & Regression Information
- This is the behavior in every version I tried: v4.9.4, v5.0.4
⏯ Playground Link
Playground link with relevant code
💻 Code
interface Dict {
[key: string]: unknown;
}
interface Thing {}
interface ThingWithNamespaceWithValueExport {}
namespace ThingWithNamespaceWithValueExport {
export const asdasd: string = '';
}
interface ThingWithNamespaceWithTypeExport {}
namespace ThingWithNamespaceWithTypeExport {
export type asdasd = string;
}
interface Foo {
prop?: Dict;
}
interface Bar extends Foo {
// ~~~ Interface 'Bar' incorrectly extends interface 'Foo'. Types of property 'prop' are incompatible. Type 'Thing' is not assignable to type 'Dict'. Index signature for type 'string' is missing in type 'Thing'.
prop: Thing;
}
interface Baz extends Foo {
// No error here. But I would expect the same error.
prop: ThingWithNamespaceWithValueExport;
}
interface Quux extends Foo {
// ~~~~ Interface 'Quux' incorrectly extends interface 'Foo'. Types of property 'prop' are incompatible. Type 'ThingWithNamespaceWithTypeExport' is not assignable to type 'Dict'. Index signature for type 'string' is missing in type 'ThingWithNamespaceWithTypeExport'.
prop: ThingWithNamespaceWithTypeExport;
}
🙁 Actual behavior
No error for interface Baz, where prop is the type of an interface with a namespace, which exports a value.
🙂 Expected behavior
Same error for Baz that we get for Bar and Quux.