babeljs - چگونه یک فایل تایپاسکریپت را از فایل JS خود در حالی که از babel-node استفاده میکنم، وارد کنم؟
زمینه
- من میخواهم کدبیس موجود خود را به تایپاسکریپت تبدیل کنم. انجام این کار به صورت یکباره امکانپذیر نیست، بنابراین من سعی دارم یک فایل را به تایپاسکریپت تغییر دهم و سپس آن را از JS موجود خود وارد کنم.
- اگر کمک به رفع اشکال میکند، این مخزنی است که روی آن کار میکنم و اینها تغییراتی هستند که فراتر از شاخه اصلی انجام شده و در زیر توضیح داده شدهاند.
کار قبلی
- من از
babel-nodeبرای اجرای برنامهام استفاده میکنم، بنابراین@babel/preset-typescriptرا به پیکربندی اضافه کردم و سپس باtsconfig.jsonبازی کردم تا زمانی که کار کرد.
// babel.config.js
module.exports = {
plugins: [
'@babel/plugin-proposal-class-properties',
'@babel/plugin-transform-runtime',
["module-resolver", {
"alias": {
"extensions": [".tsx",".ts"],
}
}]
],
presets: [
'@babel/preset-env',
'@babel/preset-react',
['@babel/preset-typescript', { allExtensions: true }],
],
compact: false,
sourceType: 'unambiguous',
};
- من سعی کردم از
// @ts-checkاستفاده کنم تا تایپ-چکر فعال بودنش را تأیید کنم، اما به سرعت متوجه شدم که من به راهنماییهای تایپ مناسب نیاز دارم. - پس من شروع کردم به افزودن آنها به یک فایل، و VS Code به من هشدار داد که
Type annotations can only be used in TypeScript files. من میتوانستم با استفاده از پیشنهادها از اینجا هشدارها را سرکوب کنم، اما این مشکل اساسی را حل نمیکند. - و بنابراین من پسوند فایل را از ".js" به ".ts" تغییر دادم. این به من سیگنالهای مفیدی درباره صحت کد داد، اما حالا نمیتوانم آن فایل را ایمپورت کنم، حتی اگر بخواهم به
babel-nodeبگویم که این یک پسوند معتبر است.
// Things I have tried inside ./demo/src/index.js
import { ProcessWrapper, StreamIntender } from './process';
> Cannot find module '/Users/kaustubh/Github/glados/demo/src/process' imported from /Users/kaustubh/Github/glados/demo/src/index.js
import { ProcessWrapper, StreamIntender } from './process.ts';
> TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /Users/kaustubh/Github/glados/demo/src/process.ts
- راهی برای رفع این مشکل وجود دارد؟ من دلیلی نمیبینم که بابل نتواند این را از نظر تئوری مجاز بداند، اگر بتواند تایپاسکریپت را تجزیه کند.
- به طور جایگزین، آیا راه دیگری برای انجام کاری که سعی دارم انجام دهم وجود دارد؟