تایپاسکریپت - نوشتن فایل .d.ts برای فایل جاوااسکریپت خودم
من یک برنامه نوشته شده به زبان جاوااسکریپت دارم و میخواهم برای یک قابلیت جدید از تایپاسکریپت استفاده کنم. من یک کلاس پایه را در جاوااسکریپت تعریف کردهام، برای مثال.
// base.js
module.exports = function BaseClass () {
// ... ...
};
و در تایپاسکریپت من نیاز دارم که یک کلاس از آن بسازم مثل این.
// sub.ts
import Base from "./base.js";
class Sub extends Base {
// ... ...
}
اما من متوجه شدم که در sub.ts خطایی وجود دارد
Type "Base" is not a constructor function type.
من میخواهم بدانم چرا این اتفاق میافتد؟ آیا این به این دلیل است که فایل .d.ts برای base.js من وجود ندارد؟ اگر چنین است، چگونه میتوانم فایل تعریف شده برای base.js ایجاد کنم و این فایل را کجا باید قرار دهم؟
پاسخ شماره ۱
آیا این به این دلیل است که فایل .d.ts برای base.js من وجود ندارد؟
بله.
اگر چنین است، چگونه میتوانم فایل مربوط به base.js را ایجاد کنم
به سادگی base.d.ts:
declare class Base {
}
و من باید این فایل را کجا قرار دهم؟
در کنار base.js.
پاسخ شماره ۲
یک مثال کامل، بر اساس پاسخ @basarat:
// data.js
var data = {
"values": [
{
"value": "a",
},
{
"value": "b",
}
],
"year" : 2018
}
export { data }
export declare class data {
static values : any[];
static year : number
}
// app.ts
import { data } from './data.js';
// data.values.filter() // autocompletion for Array methods should appear in the IDE
// data.year.toFixed(1) // // autocompletion for Number methods should appear in the IDE
در یک برنامه Angular 6 با TypeScript نسخه ۲.۹.۲ آزمایش شده است.
