javascript - Typescript importera node_modules med ECMAscript 6-syntax


Jag installerade biblioteket lodash från npm och nu vill jag importera det till min fil på detta sätt:

import _ from 'lodash';

Men jag får det här felet:

Fel TS1192: Modulen '"lodash"' har ingen standardexport.

Varför får jag detta fel? och hur kan jag importera node_modules som inte är .ts-filer med den nya import-syntaxen i ECMAscript6?

Svar #1

Följande två tillvägagångssätt fungerar för mig:

Använder require:

/**
 * Install package via
 *   $ bower install lodash --save
 * Run:
 *   $ node test.js  # after TypeScript compilation
 */

// test.ts file
/// <reference path="typings/lodash/lodash.d.ts" />
import _ = require('./bower_components/lodash/lodash.js');
console.log(_.chunk(['a', 'b', 'c', 'd'], 2));

ES6 importera:

/**
 * Install package via
 *   $ tsd install lodash --save # to download definition file
 *   $ npm install lodash --save
 * 
 * Run:
 *   $ node test.js  # after TypeScript compilation 
 */
// test.ts file
/// <reference path="typings/lodash/lodash.d.ts" />
import * as _ from 'lodash';

console.log(_.chunk(['a', 'b', 'c', 'd'], 2));
// → [['a', 'b'], ['c', 'd']]

Observera: Sökvägskartläggningar baserade på modulupplösning planeras för TypeScript 1.8 (https://github.com/Microsoft/TypeScript/issues/5039)

Relaterade artiklar