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
  • راهی برای رفع این مشکل وجود دارد؟ من دلیلی نمیبینم که بابل نتواند این را از نظر تئوری مجاز بداند، اگر بتواند تایپاسکریپت را تجزیه کند.
  • به طور جایگزین، آیا راه دیگری برای انجام کاری که سعی دارم انجام دهم وجود دارد؟