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

Created on 9 Jun 2018  路  6Comments  路  Source: microsoft/TypeScript


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:

https://github.com/strongloop/loopback-next/issues/1405

Bug Declaration Emit

Most helpful comment

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

See https://github.com/Microsoft/TypeScript/pull/24874#issuecomment-397075614

All 6 comments

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

@weswigham can you take a look

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

See https://github.com/Microsoft/TypeScript/pull/24874#issuecomment-397075614

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

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

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

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Roam-Cooper picture Roam-Cooper  路  3Comments

MartynasZilinskas picture MartynasZilinskas  路  3Comments

bgrieder picture bgrieder  路  3Comments

blendsdk picture blendsdk  路  3Comments

kyasbal-1994 picture kyasbal-1994  路  3Comments