导入外部定义

时间:2015-02-08 13:21:15

标签: typescript typescript1.4

使用Typescript,有没有办法从外部模块导入类型?

基本上我只想让一个模块知道另一个模块的输入(为Intellisense供电),但是没有在JavaScript中发出导入。我想这样做是因为有问题的模块可能已加载或未加载 - 即没有硬依赖,但我希望有一些运行的类型代码,如果它存在则使用该模块。

希望这很清楚。

2 个答案:

答案 0 :(得分:8)

您可以使用定义文件以及引用注释,这样可以在不添加任何导入语句(例如requiredefine)的情况下使用类型。

///<reference path="module.d.ts" />

您可以在编译期间自动生成定义文件,但是出于您的目的,您可能想要手动设置自定义文件(取决于您希望如何使用它 - 预计会自动导入)。

示例代码

ModuleA.ts

class ExampleOne {
    doSomething() {
        return 5;
    }
}

export = ExampleOne;

ModuleB.ts

class ExampleTwo {
    doSomething() {
        return 'str';
    }
}

export = ExampleTwo;

预期用途:

import B = require('moduleb');

var a = new ExampleOne();
var b = new B();

要使这项工作成功,您需要创建 ModuleA.d.ts

ModuleA.d.ts

declare class ExampleOne {
    doSomething(): number;
}

然后像这样引用它:

/// <reference path="modulea.d.ts" />

import B = require('moduleb');

var a = new ExampleOne();
var b = new B();

答案 1 :(得分:0)

我不知道它是否回答您的问题,但是您可以添加类型定义文件:

/** mytype.d.ts */
interface MyType {
  prop1: number,
  prop2: string
}

export default MyType

并将其导入到两个模块中,如下所示:

/** module1.ts */
import MyType from './mytype.d'

//use
let myVar: MyType