-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Description
This is a follow up to #30258. I am now using TS 3.7.4 and the compiler sometimes generates inline imports although the TS source contains imports in the head area of the file.
Example:
TS Source is:
import {
AbstractRegisteredComponent,
AbstractRegisteredLayoutMapping
} from '@acoustic-content-sdk/component-utils';
import { ComponentTypeRef } from '@acoustic-content-sdk/react-api';
import { LayoutComponentDirective } from './layout.directive';
export type RegisteredComponent = AbstractRegisteredComponent<
ComponentTypeRef,
LayoutComponentDirective
>;
export type RegisteredLayoutMapping = AbstractRegisteredLayoutMapping<
ComponentTypeRef
>;
const KEY_COMPONENT = Symbol();
const KEY_LAYOUT_MAPPING = Symbol();
export const registerComponent = (
aType: ComponentTypeRef,
aRegistration: RegisteredComponent
) => (aType[KEY_COMPONENT] = aRegistration);
export const registerLayoutMapping = (
aType: ComponentTypeRef,
aRegistration: RegisteredLayoutMapping
) => (aType[KEY_LAYOUT_MAPPING] = aRegistration);
export const getRegisteredComponent = (
aType: ComponentTypeRef
): RegisteredComponent => aType[KEY_COMPONENT];After compilation the generated .d.ts file is:
import { AbstractRegisteredComponent, AbstractRegisteredLayoutMapping } from '@acoustic-content-sdk/component-utils';
import { ComponentTypeRef } from '@acoustic-content-sdk/react-api';
import { LayoutComponentDirective } from './layout.directive';
export declare type RegisteredComponent = AbstractRegisteredComponent<ComponentTypeRef, LayoutComponentDirective>;
export declare type RegisteredLayoutMapping = AbstractRegisteredLayoutMapping<ComponentTypeRef>;
export declare const registerComponent: (aType: import("@acoustic-content-sdk/react-api").ReactComponent<import("@acoustic-content-sdk/react-api").ReactComponentProps, any>, aRegistration: RegisteredComponent) => RegisteredComponent;
export declare const registerLayoutMapping: (aType: import("@acoustic-content-sdk/react-api").ReactComponent<import("@acoustic-content-sdk/react-api").ReactComponentProps, any>, aRegistration: RegisteredLayoutMapping) => RegisteredLayoutMapping;
export declare const getRegisteredComponent: (aType: import("@acoustic-content-sdk/react-api").ReactComponent<import("@acoustic-content-sdk/react-api").ReactComponentProps, any>) => RegisteredComponent;Many (but not all) of the import statements have been inlined.
Why is this happening and how can I avoid this?
The underlying problem is that I am using @microsoft/api-extractor and @microsoft/api-documenter to generate documentation for my project. These tools rely on the information in the .d.ts files to generate their doc and with the inline imports this end-user facing documentation becomes very hard to read, if not unusable.
TypeScript Version: 3.7.4
Expected behavior:
I expect the import statements in the .d.ts files to match the import statements in the ts source.
Actual behavior:
Imports are sometimes inlined, sometimes not. I cannot tell what causes the imports to be inlined.
Related Issues: