如何导入其他类型记录文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

当使用vs.net的类型记录插件时,如何使一个类型记录文件导入模块在其他类型记录文件中声明?

档案1:

module moo
{
    export class foo .....
}

档案2:

//what goes here?

class bar extends moo.foo
{
}
提问于
用户回答回答于

从类型记录版本1.8中,可以使用简单的import如ES6中的语句:

import { ZipCodeValidator } from "./ZipCodeValidator";

let myValidator = new ZipCodeValidator();

旧答案:从打字本1.5版中可以使用tsconfig.json

它完全消除了评论风格参考的需要。

较早的答案:

需要引用当前文件顶部的文件。

你可以这样做:

/// <reference path="../typings/jquery.d.ts"/>
/// <reference path="components/someclass.ts"/>

class Foo { }

这些路径相对于当前文件。

你的例子:

/// <reference path="moo.ts"/>

class bar extends moo.foo
{
}
用户回答回答于

打字本区分两种不同的模块:

内部模块用于在内部构造代码。在编译时,必须使用引用路径将内部模块纳入范围:

/// <reference path='moo.ts'/>

class bar extends moo.foo {
}

外部模块用于引用要加载的外部源文件。在运行时使用CommonJSAMD,要使用外部模块加载,您必须执行以下操作:

export class foo {
    test: number;
} 

应用程序

import moo = module('moo');
class bar extends moo.foo {
  test2: number;
}

请注意将代码放入作用域中的不同方法。对于外部模块,必须使用module具有包含模块定义的源文件的名称。如果要使用AMD模块,必须按以下方式调用编译器:

tsc --module amd app.ts

然后将其编译为

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
}
define(["require", "exports", 'moo'], function(require, exports, __moo__) {
    var moo = __moo__;

    var bar = (function (_super) {
        __extends(bar, _super);
        function bar() {
            _super.apply(this, arguments);

        }
        return bar;
    })(moo.foo);
})    

扫码关注云+社区