【问题标题】:Import Typescript modules in Svelte Component在 Svelte 组件中导入 Typescript 模块
【发布时间】:2020-08-09 03:49:49
【问题描述】:

我已经设置了svelte-preprocess,所以我可以成功地做到这一点:

<script lang="typescript">
    let someConstant:string = "some constant";
    console.log({someConstant});
</script>

这行得通。但我不知道如何将这个常数外化。如果我尝试:

<script lang="typescript">
    import {someConstant} from './SomeTypescript.ts'
    console.log({someConstant});
</script>    

我收到此错误消息:

error TS2691: An import path cannot end with a '.ts' extension. Consider importing './SomeTypescript' instead.

当我把它改成

<script lang="typescript">
    import {someConstant} from './SomeTypescript'
    console.log({someConstant});
</script>

我收到此错误:

Error: Could not resolve './SomeTypescript' from src/tom/ManageAirtableModels.svelte

这样做的正确方法是什么?

【问题讨论】:

    标签: svelte svelte-3


    【解决方案1】:

    为 typescript 安装汇总插件以处理非精简文件:

    yarn add -D @rollup/plugin-typescript typescript tslib
    

    plugin-typescript 添加到rollup.config.js 中的plugins 列表中:

    //....
    import autoProcess from 'svelte-preprocess'
    import typescript from '@rollup/plugin-typescript'
    
    export default {
      ...
      plugins: [
        typescript(),
    
        svelte({
          preprocess: autoProcess(),
          ...
        })
        ...
      ]
    }
    
    

    现在import 不需要.ts 扩展:

    <script lang="typescript">
        import {someConstant} from './SomeTypescript'
        console.log({someConstant});
    </script>
    

    【讨论】:

    • 对于那些尽管以这种方式设置汇总但遇到此问题的人,请尝试将汇总打字稿插件的tsconfig 参数指向您用于 Svelte 的 tsconfig。为我工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2021-01-25
    • 1970-01-01
    • 2012-11-06
    • 2012-10-09
    • 2018-11-01
    相关资源
    最近更新 更多