TS2497

Module 'logdown' resolves to a non-module entity and cannot be imported using this construct.

Broken Code ❌

Export: logdown.d.ts

declare class Logdown {
  constructor(options?: Object);
  public debug(...args: any[]): void;
  public error(...args: any[]): void;
  public info(...args: any[]): void;
  public log(...args: any[]): void;
  public warn(...args: any[]): void;
  public static disable(...args: string[]): void;
  public static enable(...args: string[]): void;
}
 
declare module 'logdown' {
  export = Logdown;
}

Import: app.ts

import { Logdown } from 'logdown';

Broken Code ❌ #2

Export

declare module 'logdown' {
  class Logdown {
    constructor(options?: Object);
    public debug(...args: any[]): void;
    public error(...args: any[]): void;
    public info(...args: any[]): void;
    public log(...args: any[]): void;
    public warn(...args: any[]): void;
    public static disable(...args: string[]): void;
    public static enable(...args: string[]): void;
  }
 
  export = Logdown;
}

Import

import {Logdown} from "logdown";
...
this.logger = new Logdown({prefix: 'abc', alignOuput: true});

Note: TypeScript compiler option "allowSyntheticDefaultImports" must be set to true.

Import

import Logdown = require('logdown');