有没有办法在打字稿中别名导入路径

时间:2014-11-26 15:35:40

标签: import module path typescript alias

import X = require('../../far/away/PathToX');
import Y = require('./another/path/PathToX');

我使用外部模块(commonJS)和browserify,以及WebStorm作为编辑器。

如果这只是简单的javascript,有各种选项可以忽略必须始终使用这些长路径,例如使用browserify别名。但是,使用typescript,编辑器实际上遵循路径并检索类型信息以提供智能感知。因此,如果我使用其中一个选项,编辑器将无法找到文件路径,并且编译器也会引发错误。

那么在typescript(对于任何编辑器)中是否存在允许我以某种方式使用路径别名的任何现有方法?

2 个答案:

答案 0 :(得分:0)

有一点黑客可以做到这一点,但你必须手动编写AMD或CommonJS导入...例如,像这样...

///<amd-dependency path="scripts/typings/cordova/cordova.d.ts" />
declare var require: any;

var cordova: Cordova = require('cordova');

module Example {

    class Test {

        constructor() {
            cordova.exec(this.success, this.error, "Service", "Action", null);
        }

        private success(message?: string) {
            //do Something
        }

        private error(message?: string) {
            //do Something
        }
    }
}

或使用define而不是require

就个人而言,我会忍受很长的路径,无需重写任何TypeScript,即可获得使用TypeScript编译器开关为AMD或CommonJS定位的好处。

答案 1 :(得分:0)

  

那么在typescript(对于任何编辑器)中是否存在允许我以某种方式使用路径别名的任何现有方法?

Grunt-ts可以为您做到这一点。您可以通过ts:import=someFileName进行简单的引用,它会为您生成正确的import语句https://github.com/TypeStrong/grunt-ts#import-transform