Bug Report
π Search Terms
delete reserved keyword .d.ts .d.ts reserved keyword
π Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about invalid .d.ts types
β― Playground Link
Playground link with relevant code
π» Code
const obj1 = {
delete: "foobar"
};
const obj2 = {
x: obj1.delete
};
export default obj2;
π Actual behavior
The emitted .d.ts file contains delete in an identifier position. This in turns triggers an error when consumed: Identifier expected. 'delete' is a reserved word that cannot be used here.
Generated .d.ts:
export default obj2;
declare namespace obj2 {
import x = obj1.delete;
export { x };
}
declare namespace obj1 {
const _delete: string;
export { _delete as delete };
}
π Expected behavior
The generated .d.ts file should be valid.
Further notes
- Invalid
.d.ts files are generated both if the input is a .js or .ts file
- I did not find any combination of flags/options/versions that would generate a valid
.d.ts file.
- I did find a workaround by altering the source file π
Workaround
This issue can currently be worked around by using ["delete"] instead of .delete. E.g. this:
const obj1 = {
delete: "foobar"
};
const obj2 = {
x: obj1["delete"]
};
export default obj2;
Generates the following valid .d.ts:
export default obj2;
declare namespace obj2 {
const x: string;
}
Bug Report
π Search Terms
deletereserved keyword.d.ts.d.ts reserved keywordπ Version & Regression Information
β― Playground Link
Playground link with relevant code
π» Code
π Actual behavior
The emitted
.d.tsfile containsdeletein an identifier position. This in turns triggers an error when consumed:Identifier expected. 'delete' is a reserved word that cannot be used here.Generated
.d.ts:π Expected behavior
The generated
.d.tsfile should be valid.Further notes
.d.tsfiles are generated both if the input is a.jsor.tsfile.d.tsfile.Workaround
This issue can currently be worked around by using
["delete"]instead of.delete. E.g. this:Generates the following valid
.d.ts: