如何在打字稿中访问外部模块

时间:2017-06-24 08:21:05

标签: angular typescript ionic2

我有一个包含模块的文件,如下所示

  

ROOT /数据库/ models.ts

module Model {
  export interface Inbox {
    title: string;
    msg: string;
  }
  export interface User{
    Id: string;
    Name: string;
  }
}

我想从主文件访问接口。看看我尝试了什么

  

ROOT /页/ main.ts

import { Model} from '../database/models'; //<-- here is my problem

export class WorkerPostbidPage {

   myinbox:Model.Inbox; // <-- And I want to call it as this

   TestMethod() {
    this.myinbox = {
        title:"new msg", 
        msg:"you have an alert"
     }
   }
}

但是当我将外部模型文件内容复制到main.ts中时,它可以正常工作

module Model {
  export interface Inbox {
    title: string;
    msg: string;
  }
  export interface User{
    Id: string;
    Name: string;
  }
}

export class WorkerPostbidPage {

   myinbox:Model.Inbox; // <-- And I want to call it as this

   TestMethod() {
    this.myinbox = {
        title:"new msg", 
        msg:"you have an alert"
     }
   }
}

我想我可能做错了什么,或者我错过了一些部分

2 个答案:

答案 0 :(得分:0)

您应该重写model.ts文件,使其符合ES6模块。

  export interface Inbox {
    title: string;
    msg: string;
  }
  export interface User{
    Id: string;
    Name: string;
  }

那么你应该能够像这样导入它们。

import { Inbox } from '../database/models';

答案 1 :(得分:0)

您无法使用此方法导入外部模块。 外部模块最终将被添加到全局范围,因此您应该将其视为这样。

假设您正在使用amd模块,那么这样的事情应该起作用

declare module Model{
    interface Inbox{
        title: string,
        msg: string
    }
}

/// <amd-dependency path="../database/models"/>

export class WorkerPostbidPage {

    myinbox:Model.Inbox; // <-- And I want to call it as this

    TestMethod() {
        this.myinbox = {
            title:"new msg", 
            msg:"you have an alert"
        }
    }
}