2016-02-18 165 views
2

说我有具有以下声明文件user.ts:声明接口

export interface User { 
    userName: string; 
} 

我想导入另一个TS脚本这个接口,但是由于JavaScript不支持接口transpiler不会产生user.js,我在导入时遇到错误。

当然,我可以将User声明为类作为解决方法,但是有没有办法在单独的TypeScript文件中声明接口?

+0

什么扩展的呢用户文件有?它应该是纯粹的接口文件.d.ts。 – toskv

+0

我刚刚.ts。将尝试与d.ts,谢谢。 –

+1

更新。该界面可以位于一个单独的文件,如user.ts.我使用SystemJS来加载和编译我的代码。我遇到的问题是由于SystemJS不知道生成的空user.js是为了作为模块而使用的。添加在SystemJS配置以下后,开始代码工作罚款: 元:{ “user.ts”:{ 格式:“ES6” }当我在命令行中使用TSC –

回答

12

您可以尝试使用户文件具有.d.ts扩展名。

例如:

user.d.ts

export interface User { name: string }

,也可以将它像往常一样:

someotherfile.ts

import {User} from './user'; 

function check(user: User) { 
    if (user.name) { 
     console.log('yeey works'); 
    } 
} 

check({ name: 'ion' }); 
+0

此代码工作正常。但在我的应用程序中,我使用SystemJS加载程序即时编译代码。它给我以下错误: (程序):1未捕获SyntaxError:意外的令牌导出 –

+0

uhm。你能用你正在使用的SystemJS配置更新你的问题吗? :) – toskv

+1

其实问题似乎是在其他地方:( 我得到你的例子与SystemJS以及 事情是,我在Angular 2应用程序中使用此代码,它不喜欢导出关键字。让我多研究一下。 谢谢你的帮助! –