javascript - file d.ts ekspor modul
Saya mulai dengan Typescript dan saya mencoba membuat modul baru tetapi saya mengalami beberapa masalah.
Saya ingin mengimpor file js ke dalam index.ts saya, jadi saya tahu bahwa saya harus membuat file d.ts untuk membuat dan menjelaskan fungsi untuk TypeScript. Ke dalam index.ts saya menaruh ini :
import Toto from "./toto";
Dan ini adalah file d.ts saya :
declare module 'Toto' {
function myfunction(callback : Function);
export default myfunction;
}
Tetapi di file d.ts saya saya memiliki kesalahan ini :
TS1128 : Diharapkan Deklarasi atau Pernyataan
Saya tidak mengerti mengapa karena ujian saya sangat mudah.
Saya menggunakan webpack untuk membangun kode, ini adalah webpack.config.js saya
module.exports = {
entry: "./index.ts",
output: {
path: "bundle/",
filename: "bundle.js"
},
resolve: {
extensions : [".ts", ".tsx", ".js"]
},
module: {
loaders: [
{ test: /\.tsx?$/, loader: "ts-loader" }
]
}
};
Dan tsconfig.json saya
{
"compilerOptions": {
"target" : "es5"
}
}
Jika kamu memiliki ide :)
Salam
Jawaban #1
Jika Anda ingin memuat file .js secara langsung, cukup atur flag "allowJS" di opsi compiler. TS kemudian akan mencoba menggunakan inferensi tipe berdasarkan JS. Opsi Compiler TS
Jadi dalam kasusmu, cukup tambahkan flag allowJS ke opsi compiler dan lewati file d.ts.
Jawaban #2
Pengaturan ini cocok untuk saya
//toto.js
function myfunction(callback) {
callback("42")
}
exports.default=myfunction
//toto.d.ts
export default function myfunction(callback : Function);
//main.ts
import myfunc from './toto'
myfunc((res) => console.log(res) )
//tsconfig.json
{
"compilerOptions": {
"target" : "es5"
}
}
Menjalankan node main.js dengan benar mencatat 42
Sebagai alternatif menggunakan allowJs
- dari set-up di atas, hapus file definisi
toto.d.ts - tambahkan
"allowJs":truedi tsconfig compilerOptions
=> Solusi pertama memerlukan pembuatan file definisi, tetapi Anda mendapatkan keuntungan dari pengetikan ketika menggunakan myfunc di main.ts.
