J'essaye d'apprendre Typescript. Bien que je ne pense pas que ce soit pertinent, j'utilise VSCode pour cette démo.
J'ai un package.json
qui contient ces pièces:
{
"devDependencies": {
"gulp": "^3.9.1",
"jspm": "^0.16.33",
"typescript": "^1.8.10"
},
"jspm": {
"moment": "npm:moment@^2.12.0"
}
}
Ensuite, j'ai une classe Typescript main.js
comme celle-ci:
import moment from 'moment';
export class Main {
}
Mon gulpfile.js
ressemble à ceci:
var gulp = require('gulp');
var typescript = require('gulp-tsb');
var compilerOptions = {
"rootDir": "src/",
"sourceMap": true,
"target": "es5",
"module": "amd",
"declaration": false,
"noImplicitAny": false,
"noResolve": true,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
};
var typescriptCompiler = typescript.create(compilerOptions);
gulp.task('build', function() {
return gulp.src('/src')
.pipe(typescriptCompiler())
.pipe(gulp.dest('/dest'));
});
Quand je lance gulp build, je reçois le message: "../main.ts(1,25): Cannot file module 'moment'."
Si j'utilise import moment = require('moment');
alors jspm fonctionnera et apportera le module lorsque j'exécute l'application, mais je reçois toujours l'erreur de construction. J'ai aussi essayé:
npm install typings -g
typings install moment --ambient --save
Au lieu d’améliorer le problème, il s’est aggravé. Maintenant, j'obtiens l'erreur ci-dessus lors de la construction ainsi que les éléments suivants:"../typings/browser/ambient/moment/index.d.ts(9,21): Cannot find namespace 'moment'."
Si je vais dans le fichier fourni par les saisies et ajoute en bas du fichier:
declare module "moment" { export = moment; }
Je peux faire disparaître la deuxième erreur, mais j'ai toujours besoin de l'instruction require pour obtenir le moment de travailler dans mon main.ts
fichier et j'obtiens toujours la première erreur de construction.
Dois-je créer mon propre .d.ts
fichier pour le moment ou y a-t-il juste un élément de configuration qui me manque?
import moment, { Moment } from 'moment';
vous permet de faireconst x = moment();
etconst x: Moment = moment();