svelte-preprocess 不会将 typescript 转换为 javascript

svelte-preprocess does not transform typescript into javascript

我正在尝试在 web worker 中解析 svelte 组件源代码。 完整源代码 here

import { parse , preprocess } from 'svelte/compiler';
import sveltePreprocess from 'svelte-preprocess';

import {
  typescript,
  scss,
  globalStyle,
} from 'svelte-preprocess';


async function parseSvelte(source : string) {
  
  const preprocessedResult = await preprocess( source, [
    typescript({}),
    scss(),
    globalStyle(),
  ]);
  console.log(preprocessedResult);

  try {
  const ast = parse(preprocessedResult.code);
  console.log(ast);
  }
  catch(e) { console.log(e.toString() )}
}

我正在使用上面的代码解析以下 svelte 组件

<script lang="ts">
const x = (y : string) => {};
</script>

preprocess 应该把打字稿转成 javascript 吧? 但是preprocessedResult.code还是包含了typescript,后面的parse失败了。

Unexpected token (3:25)
1: 
2:           <script lang="ts">
3:             const x = (y : string) => {};
                            ^
4:             </script>

调用preprocess方法没有报错,请问这里是什么问题?

svelte-preprocess/src/transformers/typescript.ts 第 497 行的问题
if (filename == null) return { code: content };

当您在没有“可选”文件名的情况下调用 svelte.preprocess 时,typescript 预处理器不执行任何操作。

使用第三个参数调用预处理以修复问题:

svelte.preprocess(code, processors, { filename: '/path/to/Component.svelte' })
                                      ^^^^^^^^

(甚至不必是有效的文件名)

我已经报告了错误 https://github.com/sveltejs/svelte-preprocess/issues/488