TypeScript
TypeScript copied to clipboard
Missing property incompatible error when there is a namespace with a value export
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.