ฉันกำลังพยายามเรียนรู้ typescript แม้ว่าฉันจะไม่คิดว่ามันเกี่ยวข้อง แต่ฉันก็ใช้ VSCode สำหรับการสาธิตนี้
ฉันมีpackage.json
ชิ้นส่วนเหล่านี้อยู่ในนั้น:
{
"devDependencies": {
"gulp": "^3.9.1",
"jspm": "^0.16.33",
"typescript": "^1.8.10"
},
"jspm": {
"moment": "npm:moment@^2.12.0"
}
}
จากนั้นฉันมีคลาส typescript main.js
ดังนี้:
import moment from 'moment';
export class Main {
}
ของฉันgulpfile.js
มีลักษณะดังนี้:
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'));
});
เมื่อฉันเรียกใช้โครงสร้างอึกฉันได้รับข้อความ: "../main.ts(1,25): Cannot file module 'moment'."
ถ้าฉันใช้import moment = require('moment');
jspm จะทำงานและนำโมดูลเข้ามาเมื่อฉันเรียกใช้แอปพลิเคชัน แต่ฉันยังคงได้รับข้อผิดพลาดในการสร้าง ฉันยังลอง:
npm install typings -g
typings install moment --ambient --save
แทนที่จะทำให้ปัญหาดีขึ้น แต่กลับแย่ลง ตอนนี้ฉันได้รับข้อผิดพลาดข้างต้นในการสร้างและสิ่งต่อไปนี้:"../typings/browser/ambient/moment/index.d.ts(9,21): Cannot find namespace 'moment'."
หากฉันไปที่ไฟล์ที่จัดเตรียมโดยการพิมพ์และเพิ่มที่ด้านล่างของไฟล์:
declare module "moment" { export = moment; }
ฉันสามารถรับข้อผิดพลาดที่สองหายไปได้ แต่ฉันยังต้องการคำสั่งที่ต้องการเพื่อให้ได้เวลาทำงานในmain.ts
ไฟล์ของฉันและยังคงได้รับข้อผิดพลาดของบิลด์แรก
ฉันจำเป็นต้องสร้าง.d.ts
ไฟล์ของตัวเองสักครู่หรือมีเพียงส่วนการตั้งค่าบางอย่างที่ขาดหายไป?
import moment, { Moment } from 'moment';
อนุญาตให้คุณทำconst x = moment();
และconst x: Moment = moment();