Skip to content

TypeScript 2.9.x incorrectly emits relative imports for symbolically linked dependencies (lerna) #24829

Description

TypeScript Version: 2.9.x

2.8.x works fine. It starts to break with TypeScript 2.9.x. It's not fixed by the latest build (typescript@next).

Search Terms:

import symbolic link lerna

Code

https://github.com/strongloop/loopback-next/blob/master/packages/core/src/keys.ts

keys.ts

import {Application, ControllerClass} from './application';

export const CONTROLLER_CLASS = BindingKey.create<ControllerClass>(
    'controller.current.ctor',
  );

Please note the ControllerClass is a type alias re-exported from another module @loopback/next which is symbolically linked to @loopback/core by lerna.

application.ts

import {Context, Binding, BindingScope, Constructor} from '@loopback/context';
export type ControllerClass = Constructor<any>;

Expected behavior:

TypeScript 2.8.x style:
keys.d.ts (emitted by tsc)

const CONTROLLER_CLASS: BindingKey<new (...args: any[]) => any>;

Or

import {Constructor} from '@loopback/context';

const CONTROLLER_CLASS: BindingKey<Constructor<any>>;

Actual behavior:

const CONTROLLER_CLASS: BindingKey<import("../../context/src/value-promise").Constructor<any>>;

Please note the relative link is only valid at development time. Once it's published as a npm module, the import cannot be resolved.

Playground Link:

Related Issues:

loopbackio/loopback-next#1405

Activity

  1. ajafff commented on Jun 10, 2018

    @ajafff
    Contributor

    This is also a problem for me when using the new feature to adjust imports after renaming a file.

  2. mhegazy commented on Jun 11, 2018

    @mhegazy
    Contributor

    Wesley Wigham (@weswigham) can you take a look

  3. raymondfeng commented on Jun 13, 2018

    @raymondfeng
    Author

    I just tried 2.9.2 release and the issue is NOT fixed but getting worse:

    See #24874 (comment)

  4. alan-agius4 commented on Jul 30, 2018

    @alan-agius4
    Contributor

    Is there update on this? I see that it has been merged but with TS 2.9.2 I still have the same issue.

  5. lukaszczernal commented on Dec 21, 2018

    @lukaszczernal

    I understand that Typescript 2 will not be fixed. We should all update to third version. Right?

  6. weswigham commented on Dec 21, 2018

    @weswigham
    Member

    Our team only maintains one version of the compiler actively, so yes.

  7. locked as resolved and limited conversation to collaborators on Oct 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

BugA bug in TypeScriptDomain: Declaration EmitThe issue relates to the emission of d.ts files

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions