Estou tentando aprender o texto datilografado. Embora eu não ache que seja relevante, estou usando o VSCode para esta demonstração.
Eu tenho um package.json
que contém estas peças:
{
"devDependencies": {
"gulp": "^3.9.1",
"jspm": "^0.16.33",
"typescript": "^1.8.10"
},
"jspm": {
"moment": "npm:moment@^2.12.0"
}
}
Então eu tenho uma classe Typescript main.js
como esta:
import moment from 'moment';
export class Main {
}
Minha gulpfile.js
aparência é esta:
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'));
});
Quando executo o gulp build, recebo a mensagem: "../main.ts(1,25): Cannot file module 'moment'."
Se eu usar import moment = require('moment');
, o jspm funcionará e trará o módulo quando executar o aplicativo, mas continuo recebendo o erro de compilação. Eu também tentei:
npm install typings -g
typings install moment --ambient --save
Em vez de melhorar o problema, ele piorou. Agora recebo o erro acima na compilação, bem como o seguinte:"../typings/browser/ambient/moment/index.d.ts(9,21): Cannot find namespace 'moment'."
Se eu for para o arquivo fornecido por digitação e adicionar no final do arquivo:
declare module "moment" { export = moment; }
Posso fazer com que o segundo erro desapareça, mas ainda preciso da instrução require para conseguir o momento de trabalhar em meu main.ts
arquivo e ainda estou recebendo o primeiro erro de compilação.
Preciso criar meu próprio .d.ts
arquivo por enquanto ou falta apenas alguma configuração?
import moment, { Moment } from 'moment';
permite que você façaconst x = moment();
econst x: Moment = moment();