Skip to content

Invalid d.ts file generated from valid input #361

@rogierschouten

Description

@rogierschouten

tsc generates a .d.ts file that it subsequently cannot parse anymore.

Input file: myfile.ts

/// <reference path="./used.d.ts" />
import myUsedId = require("used");
export class foo extends myUsedId.SomeClass {
}

Input file: used.d.ts

declare module "used" {
        // note: the following does work: export import bar = require("some_used_module");  
    import bar = require("some_used_module");  
    export import SomeClass = bar.SomeClass;
}
declare module "some_used_module" {
    export class SomeClass {

   }
}

Typescript command, tsc version 1.0.3.0:

tsc -m commonjs -d -t es5 ./myfile.ts

Output file myfile.d.ts

/// <reference path="used.d.ts" />
import myUsedId = require("used");
export declare class foo extends "some_used_module".SomeClass {
}

This output file cannot be used, it generates a compile error: TS1008: Unexpected token; 'type name' expected. It does so on the quoted "some_used_module".SomeClass.

Expected output file myfile.d.ts:

/// <reference path="used.d.ts" />
import myUsedId = require("used");
export declare class foo extends myUsedId .SomeClass {
}

A workaround is exporting bar from used.d.ts. However this breaks encapsulation unnecessarily, as ALL of bar is now exposed.

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptFixedA PR has been merged for this issue

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions