TypeScript,使用'导入'

时间:2015-11-26 16:10:36

标签: angular typescript

我正在使用Angular 2.0 / TypeScript(Visual Studio 2015,TS 1.6),而我正试图了解'是如何从'应该工作。 我在app.ts中定义了我的模块,输出路径设置为./build。

在bootstrap.ts中,我用

导入模块
import {bootstrap} from "angular2/angular2";
import {App} from "./app";
bootstrap(App);

由于我的构建目标不同于源目标,因此我可以使用的唯一方法是将每个文件添加到System.Config()

<script>
    System.config({
        packages: {
            './build/bootstrap': { defaultExtension: 'js' },
            './build/app': { defaultExtension: 'js' },
            './build/Components/Comp01/component': { defaultExtension: 'js' },
            './build/Components/Comp02/component': { defaultExtension: 'js' },
        },
    });
    System.import('./build/bootstrap');
</script>

如果我将导入语句更改为使用&#39; ./ build / app.js&#39;然后我得到一个TS2307错误,&#39;找不到模块./build.app.js' 如果我将导入语句更改为&#39; ./ app.ts&#39;然后编译器很高兴,但显然浏览器会尝试加载app.ts而不是app.js

使用&#39; import&#39;的正确方法是什么?在输出位于不同位置的TypeScript中?

1 个答案:

答案 0 :(得分:0)

有一种方法,因为我知道::

你应该这样做。

假设您有一个文件夹应用程序,此文件夹app.ts和bootstrap.ts中有两个文件

所以你应该使你的js文件夹结构与ts文件夹结构相同E.g你的build文件夹将有两个文件app.js bootstrap.js

然后使用以下代码

 import {App} from "../app";

没有错误,因为loader会找到具有上述指定路径的app.js,导入会找到具有相同指定路径的app.ts。

假设您在app文件夹中有另一个名为component1的文件夹,并且有一个component1.ts文件

然后您应该使您的js文件夹结构与ts文件夹相同,因此build将具有component1文件夹,component1文件夹将具有component1.js

所以supoose你必须在component1.ts中导入app.ts然后

$('.bxslider').bxSlider(..)

它会找到具有相同路径的js和ts