TypeScript Version: 4.0.0-dev.20200522
Search Terms:
Code
functionfoo(){}foo.null=true;Expected behavior:
Any syntactically valid output. Since namespaces can't hold keyword names one option is generating an object type with call signature:
declarevarfoo: {(): void;null: boolean;}This change would also allow to generate declarations for statically-analyzable dynamic property access expressions (i.e. foo["foo bar"] = true), which are currently omitted from declarations, resulting different behavior between in-project and out-of-project values.
Actual behavior:
declarefunctionfoo(): void;declarenamespacefoo{varnull: boolean;// ^^^^^^^ TS2693: 'boolean' only refers to a type, but is being used as a value here.// ^^^^^ TS1134: Variable declaration expected.}Playground Link:https://www.typescriptlang.org/play?ts=4.0.0-dev.20200522#code/GYVwdgxgLglg9mABMOcAUBKRBvAvgKBTgDowQAbcxAXkSgCcQBTAbiA
Related Issues:
TypeScript Version: 4.0.0-dev.20200522
Search Terms:
Code
Expected behavior:
Any syntactically valid output. Since namespaces can't hold keyword names one option is generating an object type with call signature:
This change would also allow to generate declarations for statically-analyzable dynamic property access expressions (i.e.
foo["foo bar"] = true), which are currently omitted from declarations, resulting different behavior between in-project and out-of-project values.Actual behavior:
Playground Link:https://www.typescriptlang.org/play?ts=4.0.0-dev.20200522#code/GYVwdgxgLglg9mABMOcAUBKRBvAvgKBTgDowQAbcxAXkSgCcQBTAbiA
Related Issues: