TypeScript: Hur importerar man en ES6 JavaScript-klass?


Jag har en ES6 JavaScript-klass som heter DB definierad som följer:

// db.js
"use strict";

export default class DB {
  ...
}

Och en TypeScript-fil som ser ut på följande sätt:

// surgeons.ts
"use strict";

import DB from "./db";

Jag förväntar mig att detta bara ska fungera men jag får följande fel:

Browserify Error { [TypeScript error: app/source/common/surgeons.ts(3,16): Error TS2307: Cannot find module './db'.]
  message: 'app/source/common/surgeons.ts(3,16): Error TS2307: Cannot find module \'./db\'.',
  fileName: 'app/source/common/surgeons.ts',
  line: 3,
  column: 16,
  name: 'TypeScript error' }

Jag försökte definiera en db.d.ts-fil som beskrivs här men detta genererade felet:

Browserify Error { [TypeScript error: app/source/common/surgeons.ts(5,16): Error TS2306: File 'app/source/common/db.d.ts' is not a module.]
  message: 'app/source/common/surgeons.ts(5,16): Error TS2306: File \'app/source/common/db.d.ts\' is not a module.',
  fileName: 'app/source/common/surgeons.ts',
  line: 5,
  column: 16,
  name: 'TypeScript error' }

Min tsconfig är som följer:

{
  "compilerOptions": {
    "module": "es6",
    "target": "es6",
    "moduleResolution": "node",
    "noImplicitAny": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true
  },
  "include": [
    "app/source/**/*",
    "test/**/*"
  ],
  "exclude": [
    "node_modules"
  ]
}

Svar #1

Enligt Daniel Rosenwasser gjorde inställningen "allowJs": true i tsconfig.json avsnittet "compilerOptions" susen. Jag behövde inte använda en .d.ts-fil alls.

Relaterade artiklar