Skip to content

Module not imported for meta-data references. #13449

Closed
@mhegazy

Description

@mhegazy

From #12888 (comment)

after upgrading to TypeScript 2.1.5.
the issue regressed in different place.

when 'strictNullCheck' option is false the following typescript emitt invalid javascript code.

file: auxiliry.ts

export class SomeClass {
    field: string;
}

file: main.ts

import { SomeClass } from './auxiliry';

function annotation(): PropertyDecorator {
    return (target: any): void => { };
}

export class ClassA {
    @annotation() array: SomeClass | null;
}

Emitted code:

"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
function annotation() {
    return function (target) { };
}
var ClassA = (function () {
    function ClassA() {
    }
    return ClassA;
}());
__decorate([
    annotation(),
    __metadata("design:type", auxiliry_1.SomeClass) // <-- auxiliry_1 is not emitted as require statement
], ClassA.prototype, "array", void 0);
exports.ClassA = ClassA;

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